為WPF項目創建單元測試
發表于:2008-09-25來源:作者:點擊數:
標簽:單元項目WPF
可能你已發現一個問題,我們無法使用VS對WPF項目創建 單元測試 (VS2005不行,VS2008我沒試過,但據說也不行),這讓人很郁悶,這里將介紹如何使用NUnit來對WPF項目創建單元測試并解決其中的難題(但利用NUnit來對WPF創建單元測試時并不會像針對.Net2.0一樣容易,可能
可能你已發現一個問題,我們無法使用VS對WPF項目創建
單元測試(VS2005不行,VS2008我沒試過,但據說也不行),這讓人很郁悶,這里將介紹如何使用NUnit來對WPF項目創建單元測試并解決其中的難題(但利用NUnit來對WPF創建單元測試時并不會像針對.Net2.0一樣容易,可能會出現一些小問題).
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:
原文轉自:http://www.kjueaiud.com