国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

WPF單元測試方法總結

開發(fā) 開發(fā)工具
WPF單元測試的進行主要可以分為對普通類(非WPF UI組件)進行測試;對WPF UI組件進行測試等。我們將針對這兩種測試做一個詳細的介紹。

WPF單元測試的創(chuàng)建需要有一定編程經驗的開發(fā)人員,才能熟練的操作。那么,在這篇文章中我們將針對WPF單元測試的創(chuàng)建過程做一個簡單的介紹。 #t#

1,對普通類(非WPF UI組件)進行測試:

這和在.Net2.0中使用NUnit進行測試時一樣,不會出現(xiàn)任何問題,參考下面的代碼:

  1. [TestFixture]   
  2. public class ClassTest {   
  3. [Test] public void TestRun() {   
  4. ClassLibrary1.Class1 obj = 
    new ClassLibrary1.Class1();  
  5. double expected = 9;   
  6. double result = obj.GetSomeValue(3);   
  7. Assert.AreEqual(expected, result);   
  8. }   

2,對WPF UI組件進行測試

使用NUnit對WPF UI組件(比如MyWindow,MyUserControl)進行測試的時候,NUnit會報如下異常:“The calling thread must be STA, because many UI components require this”。

下面是錯誤的WPF單元測試代碼:

  1. [TestFixture]   
  2. public class ClassTest {   
  3. [Test] public void TestRun() 
    { WindowsApplication1.Window1 
    obj = 
    new WindowsApplication1.Window1();   
  4. double expected = 9;   
  5. double result = obj.GetSomeValue(3);   
  6. Assert.AreEqual(expected, result);   
  7. }   

為了讓調用線程為STA,我們可以編寫一個輔助類CrossThreadTestRunner:

 

  1. using System; using System.
    Collections.Generic;   
  2. using System.Text;   
  3. using System.Threading;   
  4. using System.Security.Permissions;   
  5. using System.Reflection;   
  6. namespace TestUnit {   
  7. public class CrossThreadTestRunner {   
  8. private Exception lastException;   
  9. public void RunInMTA(ThreadStart 
    userDelegate) {   
  10. Run(userDelegate, ApartmentState.MTA);   
  11. }   
  12. public void RunInSTA(ThreadStart 
    userDelegate) {   
  13. Run(userDelegate, ApartmentState.STA);   
  14. }   
  15. private void Run(ThreadStart 
    userDelegate, 
    ApartmentState apartmentState) {   
  16. lastException = null;   
  17. Thread thread = new Thread( delegate() {   
  18. try { userDelegate.Invoke();   
  19. }   
  20. catch (Exception e) { lastException = e;   
  21. }   
  22. });   
  23. thread.SetApartmentState(apartmentState);   
  24. thread.Start();   
  25. thread.Join();   
  26. if (ExceptionWasThrown())   
  27. ThrowExceptionPreservingStack
    (lastException);   
  28. }   
  29. private bool ExceptionWasThrown() {   
  30. return lastException != null;   
  31. }   
  32. [ReflectionPermission(Security
    Action.Demand)]   
  33. private static void ThrowException
    PreservingStack(Exception exception) {   
  34. FieldInfo remoteStackTraceString = 
    typeof(Exception).GetField( "_remoteStack
    TraceString", BindingFlags.Instance | 
    BindingFlags.NonPublic);  
  35. remoteStackTraceString.SetValue(exception,
     exception.StackTrace + Environment.NewLine);   
  36. throw exception;   
  37. }   
  38. }   

并編寫正確的WPF單元測試代碼:

  1. [TestFixture] public class ClassTest {   
  2. [Test] public void TestRun() {   
  3. CrossThreadTestRunner runner = 
    new CrossThreadTestRunner();   
  4. runner.RunInSTA( delegate {   
  5. Console.WriteLine(Thread.CurrentThread.
    GetApartmentState());   
  6. WindowsApplication1.Window1 obj = 
    new WindowsApplication1.Window1(); 
    double 
    expected = 9;  
  7. double result = obj.GetSomeValue(3);   
  8. Assert.AreEqual(expected, result);   
  9. });   
  10. }   

另外,使用NUnit時,您需要添加對nunit.framework.dll的引用,并對WPF單元測試類添加[TestFixture]屬性標記以及對測試方法添加[Test]屬性標記,然后將生成的程序集用nunit.exe打開就可以了。

責任編輯:曹凱 來源: IT168
相關推薦

2017-01-14 23:42:49

單元測試框架軟件測試

2011-05-16 16:52:09

單元測試徹底測試

2009-09-01 10:20:06

protected方法單元測試

2023-07-26 08:58:45

Golang單元測試

2011-06-20 17:25:02

單元測試

2024-10-16 16:09:32

2017-01-16 12:12:29

單元測試JUnit

2017-01-14 23:26:17

單元測試JUnit測試

2011-11-18 15:18:41

Junit單元測試Java

2009-06-02 14:24:32

Hibernate單元測試HSQLDB

2020-08-18 08:10:02

單元測試Java

2017-03-23 16:02:10

Mock技術單元測試

2021-05-05 11:38:40

TestNGPowerMock單元測試

2011-07-04 18:16:42

單元測試

2020-05-07 17:30:49

開發(fā)iOS技術

2022-09-15 10:02:58

測試軟件

2012-05-17 09:09:05

Titanium單元測試

2020-09-30 08:08:15

單元測試應用

2013-06-04 09:49:04

Spring單元測試軟件測試

2011-06-14 15:56:42

單元測試
點贊
收藏

51CTO技術棧公眾號

欧美不卡在线播放| 亚洲免费婷婷| www视频在线观看免费| 亚洲免费视频播放| 黄污在线观看| 国产真实生活伦对白| 在线视频免费在线观看一区二区| 美女国内精品自产拍在线播放| 日韩制服丝袜av| 国产91九色视频| 国产经典一区| 91麻豆精品国产91久久久久| 360天大佬第二季在线观看| 91色在线porny| 亚洲一区精品视频| 欧美一区成人| 国产精品久久久久aaaa九色| 99久热在线精品视频观看| 日韩免费观看高清完整版| 青草久久伊人| 亚洲欧美激情在线| 久久婷婷国产精品| 国产成人亚洲综合a∨猫咪| 欧美人xxxxx| 亚洲国产网站| 亚洲最大成人网色| 欧美好骚综合网| 51精品国产黑色丝袜高跟鞋 | 一区二区成人国产精品| 欧美激情日韩| 亚洲r级在线观看| 91综合视频| 国产精品丝袜一区二区三区| 久久99性xxx老妇胖精品| 2019av中文字幕| 亚洲欧美日本伦理| 91精品国产高清久久久久久久久| 亚洲视频国产| 51视频国产精品一区二区| 五月国产精品| 国产精品视频久| 欧美在线影院| 久久99国产精品99久久| 爽好久久久欧美精品| 亚洲一区二区三区四区中文| 国模娜娜一区二区三区| www.18av.com| 97精品国产97久久久久久久久久久久| 女性女同性aⅴ免费观女性恋| 久久久亚洲欧洲日产国码αv| 亚洲狼人综合干| 亚洲欧美日韩国产综合在线| 波多野结衣在线| 在线视频亚洲一区| 成人在线网址| 亚洲人高潮女人毛茸茸| 精品一区二区三区免费看| 欧美自拍视频在线| 欧美a级在线| 亚洲高清在线播放| 99久久精品一区| 久久.com| 91电影在线观看| 欧美性video| 中文字幕日韩免费视频| 一区二区三区在线资源| 国产999精品久久久| 亚洲无线视频| 麻豆传媒网站在线观看| 国产精品色哟哟网站| 你懂的在线看| 亚洲精品自拍视频| 成人激情自拍| 国产精品一区二区三区免费| 国产精品资源在线| 免费av一级电影| 日韩一本二本av| 国产亚洲久久| 成人午夜小视频| 蜜桃久久精品一区二区| 97公开免费视频| 欧美日韩一级视频| 色综合视频一区二区三区44| 国产精品视频一区二区三区四| 久久国产一二区| 丰满少妇在线观看| 欧美日韩极品在线观看一区| 国产亚洲精品精品国产亚洲综合| 国产精品一区二区三区免费视频| 蜜桃av一区二区三区电影| 先锋在线亚洲| 欧美精品一区二区蜜臀亚洲| 黑人久久a级毛片免费观看| 九九九九精品| 国产精品私人影院| 中文在线观看免费| 欧美一区二区色| 蜜臀av国产精品久久久久| 婷婷丁香六月天| 亚洲摸下面视频| 国产综合欧美| 日韩一区二区三区不卡视频| 精品久久久三级丝袜| 狠狠操综合网| a级黄色一级片| 欧美精品三级日韩久久| 精品少妇3p| 日韩在线视频在线| 欧美在线视频不卡| 亚洲裸色大胆大尺寸艺术写真| 综合色婷婷一区二区亚洲欧美国产| 亚洲一级不卡视频| 国产高清亚洲| 致1999电视剧免费观看策驰影院| 亚洲成人福利片| 欧美专区一区| 宅男一区二区三区| 欧美日韩成人高清| 国产精品午夜一区二区三区| 五月丁香综合缴情六月小说| 日韩精品在线一区二区| 日韩免费特黄一二三区| 日本成人中文字幕在线| 亚洲黄页视频免费观看| 欧美午夜不卡| 国产无遮挡在线视频免费观看| 久久精品一本久久99精品| 丝袜美腿亚洲综合| 成人好色电影| 亚洲va男人天堂| 中文字幕在线不卡一区 | 国产精品久久久爽爽爽麻豆色哟哟| 国产一线二线在线观看 | 国产伦精品一区二区三区视频黑人 | 在线播放不卡| 91大神网址| 欧美日韩福利在线观看| 成人一区二区三区视频在线观看| av网站网址在线观看| 国产98在线|日韩| 精品欧美一区二区三区| 精品成人影院| 国产中文字幕第一页| 久久久久久久97| 久久九九影视网| 亚洲伊人精品酒店| 无码精品a∨在线观看中文| 中文字幕欧美国内| 粉嫩av一区二区三区粉嫩| 成人影院大全| 日本五级黄色片| 日韩中文字幕在线播放| 99在线精品免费| 日韩区欧美区| а√最新版天堂中文在线| 97在线视频免费播放| 国产精品理伦片| 亚洲小说图片| 香蕉自在线视频| 97久久人人超碰caoprom欧美| 精品欧美aⅴ在线网站| 最新国产精品| www在线播放| 秋霞在线观看一区二区三区| 精品国产免费一区二区三区四区 | 91久久久久久久久| 精品福利免费观看| 中文字幕人成人乱码| 青青操视频在线| 国产偷久久久精品专区| 精品国产伦一区二区三区观看体验| 日本女优在线视频一区二区| 一区二区精品伦理... | 北条麻妃在线观看| 欧美激情日韩图片| 亚洲激情六月丁香| 红桃视频国产精品| 超碰在线视屏| 免费无码av片在线观看| 91高潮在线观看| 日韩欧美亚洲国产一区| 久久久久久黄| 一级欧美视频| 粉嫩喷白浆久久| 久久久久网址| 欲色天天网综合久久| 国产女同互慰高潮91漫画| 成人情趣视频网站| 性开放的欧美大片| 国产av熟女一区二区三区| 国模精品视频一区二区三区| 色婷婷综合久久久中文字幕| 激情欧美一区二区| 日韩av字幕| 伊人春色在线观看| 精品视频一区二区在线| 亚洲在线视频福利| 国产午夜精品一区理论片飘花| 亚洲同性同志一二三专区| 国产亚洲精品久久久久婷婷瑜伽|