[C#.NET] NUnit Test 初體驗
一直以來都是使用 MS Test,由於 MS Test 測試 Exception 的語意,不是那麼的清楚,該是時候擁抱 NUnit 了
被測試類如下
public class Class1 { public string IsValid() { return "Hi,NUnit Test"; } public string Hello(string name) { return "Hello, " + name; } public string GetValue() { throw new NotImplementedException("No Implement"); } }
本文章節:
開始前要先安裝 NUnit Test Adapter
有兩種方式安裝,第一個是從 Extensions and Updates,這個裝一次就好
另一個是從 Nuget 上取得,優缺點剛好跟上述方法相反
優點:別人拿到你的測試專案,不需要安裝 NUnit Test Adapter。
缺點:在不同的專案每次都要安裝,否則 VS 不認識它。
以上兩個方法擇一。
本篇選擇使用第二種方法。
NUnit Test Adapter 裝完之後便可以在 Test Explorer 裡面看到相關的測試,接著便能動手開始寫,
建立一個 Unit Test 測試專案,然後把 MSTest 的 dll 移掉
在 Unit Test 測試專案加入一個檔案,在方法上加上 [Test] ,依據3A原則,我很快的便建立了一個綠燈
Assert 斷言所提供的方式幾乎 MSTest 跟一樣
到目前為止,除了安裝步驟比 MSTest 麻煩一些,其餘的用法幾乎一樣
參數化測試,這能允許我們把參數放在Attribute
[TestCase("yao")] public void TestMethod2(string name) { var expected = "Hello, " + name; Class1 c = new Class1(); var actual = c.Hello(name); Assert.AreEqual(expected, actual); }
在 Test Explorer 裡可以看到,兩個 TestCase 變成了兩個測試方法
也可以把 expected 寫在 TestCase
[TestCase("yao", "Hello, yao")] public void TestMethod3(string name, string expected) { Class1 c = new Class1(); var actual = c.Hello(name); Assert.AreEqual(expected, actual); }
測試方法執行"前"都會先執行 Setup 區段的方法
測試方法結束"後"都會先執行 TearDown 區段的方法
範例如下:
[SetUp] public void Before() { //共用準備動作 } [TearDown] public void After() { //結束動作 }
先用 Assert.Catch 捕捉例外,然後用 StringAssert 驗証例外訊息,這樣的寫法比 MSTest 的 ExoectedException 方法好太多的多,使用方法請參考
http://www.dotblogs.com.tw/yc421206/2012/05/20/72279public void TestMethod4() { Class1 c = new Class1(); var expected = "No Implement"; var actual = Assert.Catch<NotImplementedException>(() => c.GetValue()); StringAssert.Contains(expected, actual.Message); }
基本上,上述的API應該都能夠讓我們調用我們想要完成的測試
更多的 Attribute,請參考以下
http://www.nunit.org/index.php?p=attributes&r=2.6.4
文章出自:http://www.dotblogs.com.tw/yc421206/2015/06/20/151603
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET