2014-10-29 55 views
0

我們的應用程序使用silverlight 5與MVVM設計模式和Telerik UI進行silverlight。
我們嘗試對使用INotifyDataErrorInfo接口的View Models進行單元測試。但它引發錯誤,silverlight5 nUnit測試類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單元測試項目)? – RAJ 2014-10-29 09:51:41

+0

@RAJ,我正在使用nUnit,首先將類庫添加到解決方案,然後將NuGet的nUnit添加到該類庫。 – shalin 2014-10-29 10:01:05

回答

2

你不能使用普通的類庫項目來測試silverlight ViewModels的運行時間是不一樣的。有時你可以成功,但如果你有任何自定義Silverlight項目引用它不會工作。您需要silverlight應用程序或類庫項目來測試silverlight視圖模型。

  1. 檢查您的測試項目模板,因爲您想測試Silverlight類庫,因爲您的視圖模型在Silverlight庫項目中,所以您需要Silverlight類庫應用程序作爲測試項目。
  2. 下載最新版本的Silverlight工具包。在該工具包中,你應該有下面的路徑。

    C:\ Program Files文件(x86)的\微軟的SDK \ Silverlight的\ V5.0 \工具包\ DEC11 \測試

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

將這兩個引用添加到您的silverlight項目中。

Silverlight項目的修改App.xaml.cs(您將用於測試),如下

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

    } 

將項目作爲啓動項目並運行。

+0

爲了更好地處理自動化測試(例如構建過程的一部分),您可以使用Statlight創建一個用於測試的內存瀏覽器,而不是需要您在瀏覽器中實際運行應用程序的微軟測試框架。唯一的缺點是你的測試不會顯示在VS測試運行器中,但是如果你使用ReSharper,你可以使用agUnit,它可以讓你通過測試瀏覽器運行測試。 – Mashton 2014-10-29 10:48:46

+0

同意Mashton,即使我使用Resharper,一旦你安裝了AgUnit,你就可以使用Resharper測試運行器來運行所有的Silverlight單元測試。 – RAJ 2014-11-04 11:29:01

0

googling大量次/天后沒有任何適當的解決方案,我的情況。我發現this site,他用不同的方式解釋它。 MS Unit,使用Silverlight 5單元測試NUnit所有的東西。

要做silverlight 5單元測試,MVVM app我用Silverlight Toolkit for silverlight 5。安裝完成後,在Visual Studio 2012中,即使在安裝Silverlight工具包後,也不會將Silverlight測試模板作爲Internet上的一些示例。我只是在我現有的項目解決方案中創建另一個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,爲您提供指導。

相關問題