為WPF項目創建單元測試[1] 單元測試工具
1、對普通類(非WPF UI組件)進行測試:
這和在.Net2.0中使用NUnit進行測試時一樣,不會出現任何問題,參考下面的代碼:
以下是引用片段:
[TestFixture]
public class ClassTest
{
[Test]
public void TestRun()
{
ClassLibrary1.Class1 obj = new ClassLibrary1.Class1();
double expected = 9;
double result = obj.GetSomeValue(3);
Assert.AreEqual(expected, result);
}
}
2、對WPF UI組件進行測試
使用NUnit對WPF UI組件(比如MyWindow,MyUserControl)進行測試的時候,NUnit會報如下異常:“The calling thread must be STA, because many UI components require this”。
下面是錯誤的測試代碼:
以下是引用片段:
[TestFixture]
public class ClassTest
{
[Test]
public void TestRun()
{
WindowsApplication1.Window1 obj = new WindowsApplication1.Window1();
double expected = 9; 軟件測試
double result = obj.GetSomeValue(3);
Assert.AreEqual(expected, result);
}
}
為了讓調用線程為STA,我們可以編寫一個輔助類CrossThreadTestRunner:
以下是引用片段: