2014-10-29 4 views
0

Наше приложение с использованием silverlight 5 с шаблоном проектирования MVVM и пользовательским интерфейсом Telerik для silverlight.
Мы пытаемся выполнить единый тест для наших моделей просмотра, которые используют интерфейс INotifyDataErrorInfo. Но поднять ошибки,silverlight5 nUnit test class INotifyDataErrorInfo определен сборка не найдена

The type 'System.ComponentModel.INotifyDataErrorInfo' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Windows, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. 

я реализовал интерфейс Inotify в нашем тестовом классе,

[TestFixture] 
public class ViewModelTest : LabOra.Applications.View.ViewModelBase, INotifyPropertyChanged 
{ 


    [Test] 
    public void ContactVmTest() 
    { 
     var vm = new ContactsVM(); 
     // Console.WriteLine(vm.NumberOfRecords); 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
} 

Но все-таки та же ошибка. Что случилось?

+0

Каков шаблон вашего тестового проекта (приложение Silverlight/проект Microsoft Unit Test)? – RAJ

+0

@RAJ, я использую nUnit, сначала добавьте библиотеку классов в решение, а затем добавьте nUnit из NuGet в эту библиотеку классов. – shalin

ответ

2

Вы не можете использовать проект обычной библиотеки классов для проверки Silverlight ViewModels, то их время выполнения отличается. Иногда вы можете преуспеть, но если у вас есть какая-либо специальная ссылка на проект Silverlight, она не будет работать. Вам нужно приложение Silverlight или проект библиотеки классов для проверки моделей отображения Silverlight.

  1. Проверьте шаблон тестового проекта, поскольку вы хотите протестировать библиотеку классов Silverlight, поскольку ваши модели представления находятся в проекте библиотеки Silverlight. В качестве тестового проекта вам необходимо использовать приложение библиотеки Silverlight.
  2. Загрузить последнюю версию инструментария Silverlight. Внутри этого инструментария вы должны иметь под dll под контуром.

    C: \ Program Files (x86) \ Microsoft SDKs \ Silverlight \ v5.0 \ Toolkit \ dec11 \ Тестирование

  3. Microsoft.Silverlight.Testing.dll
  4. Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight .dll

Добавьте эти две ссылки в проект silverlight.

Изменить App.xaml.cs из SilverLight проекта (Вы собираетесь использовать для теста), как показано ниже

private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     this.RootVisual = UnitTestSystem.CreateTestPage(); 

    } 

Установить проект как запустить проект и запустить.

+0

Для лучшей обработки автоматических тестов (например, части процесса сборки) вы можете использовать Statlight, который создает браузер для работы в оперативной памяти для тестирования, а не среду тестирования Microsoft, которая требует от вас фактически запускать ваше приложение в браузере. Единственным недостатком является то, что ваши тесты не будут отображаться в тестовом бегуне VS, но если вы используете ReSharper, вы можете использовать agUnit, который * позволяет * запускать ваши тесты через тестовый проводник. – Mashton

+0

Согласитесь с Mashton, Даже я использую Resharper, и есть графический плагин студии для AgUnit, как только вы устанавливаете AgUnit, вы можете использовать тестовый бегун Resharper для запуска всех тестов модулей silverlight. – RAJ

0

после поиска в Интернете много раз/дней без надлежащего решения моего сценария. я нашел this site, он объясняет это разными способами. MS Unit, NUnit весь материал с silverlight 5 единиц тестирования.

Чтобы выполнить тестирование модулей на silverlight 5, приложение MVVM, я использовал Silverlight Toolkit for silverlight 5. После установки в Visual Studio 2012 у вас не будет тестового шаблона Silverlight в качестве некоторых примеров в Интернете, как описано даже после установки набора инструментов silverlight. Я просто создаю еще один проект silverlight 5 в моем существующем проектном решении и создаю класс и ставил аннотации. Для этого вам нужно добавить ссылку на единичное тестирование на ваш вновь созданный проект.

[TestClass] 
public class UnitTest 
{ 
    [TestMethod] 
    public void load() 
    { 
     Assert.IsTrue(true); 
    } 

} 

Те находятся, C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Toolkit\dec11\Testing папки, просматривать и добавлять.

изменить тестовый проект событие запуска App.xaml.cs,

private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     this.RootVisual = UnitTestSystem.CreateTestPage(); 
    } 

Наконец, в оригинальном проекте (ProjectName.web), установить его в качестве запуска проекта, если вы не сделали, и установить начало страницу в качестве страницы проекта тестирования.(This link will help you)

Также спасибо RAJ, для вашего руководства.

Смежные вопросы