#if !NUNIT
using Microsoft.VisualStudio.TestTools.UnitTesting;
#else
using NUnit.Framework;
using TestClass = NUnit.Framework.TestFixtureAttribute;
using TestMethod = NUnit.Framework.TestAttribute;
using TestInitialize = NUnit.Framework.SetUpAttribute;
using TestCleanup = NUnit.Framework.TearDownAttribute;
#endif
我所需要做的就是使用NUnit測試屬性改變我的方法為TestMethod,然后我就有一個在兩種方式下工作的測試代碼。
TimeOutAttribute
包含決大部分屬性的文檔固然非常好。但是,最重要的屬性之一,TimeOutAttribute并沒有包含在API文檔中。當TESTRUNCONFIG 文件允許你指定單元測試的全部超時值時,TimeOutAttribute讓你指定一個單獨的測試可能花費的最大毫秒數。我發現 TimeOutAttribute在這些聯系數據庫的測試方法上沒有價值,所以我密切注視這些查詢。請注意,時間值包含一些測試運行器的時間。另外,機器的速度和性能將影響時間。使用你的測試進行實驗來看一下時間選擇是怎么在你的系統上工作的。
TestContext類我們只是簡要的涉及到,它也是被單元測試向導添加進來的TextContext屬性。主要的論述是關于當你正在使用 DataSourceAttribute時通過使用TestContext類獲得數據行。TestContext類有很多內容提供。文檔顯示出 TestContext類標記為抽象,但是事實上支持你的單元測試的源類型是UnitTestAdapterContext,它來自于 Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dl,你可以在< Visual Studio .NET install dir>\Common7\IDE\PrivateAssemblies 中發現這個DLL文件。你可以使用.NET Reflector查看UnitTestAdapterContext以此明白它是如何工作的。
或許這個類支持的最重要的方法就是WriteLine,你可以使用它添加額外的輸出到單獨的測試結果中。所有的編寫都將出現在報告的額外信息部分。為了發現什么測試正在運行或測試開始于什么目錄,你可以單個使用TestContext屬性域TestName和TestDir。最后,如果你想為所有或部分測試設置時間器,調用TestContext.BeginTimer和TestContext.EndTimer。在標準的控制臺輸出部分,時間數據將顯示在測試運行結果中。
為你寫代碼
我曾經提到,我已經包含了一個連同它的單元測試一起的真正單元。Bugslayer.Utility.DLL是一個我已經在項目之間拖拽的有用代碼集合。 ArgParser類是一個命令行論據分析類,這個類是基于在舊的.NET Framework SDK WordCount例子中的類。SystemMenuForm類是一個Windows窗體,這個窗體允許你在系統菜單中附加項目和作為常規時間回應點擊操作。
文章來源于領測軟件測試網 http://www.kjueaiud.com/