uniTest
在這邊寫一下UniTest 的小小操作,因為In91大哥寫的實在是太完整了,所有觀念去看他的便可以收穫良多。
這邊主要以我自己去實際操作為主,順便紀錄我碰到的困難。
既有程式產生單元測試(VS2015)
首先,先建立一個 Library 專案,請注意為下方這種專案類型(其他的在按建立單元測試時會報錯)。
再來我們先寫一個方法叫做Add 主要是將參數a 與 參數 b 相加,如同下方的程式碼
public int add(int a, int b)
{
return a + b;
}
接著我們點選在方法上按右鍵,建立單元測試(此時,便會自動幫你建立測試檔案)
會出現以下的視窗,VS2015 內建的測試架構只有MSTest接著便會出現以下的ClassTests 檔案,但addTest() 裡面如果依照In91上面寫得應該會自己產生出參數以及Assert.AreEqual()這個方法,
但我也不知道為何我的沒有產生,可能在選擇專案的時候選擇的不一樣吧!!
沒關係,沒出現我們自己打。
- Class1 c = new Class(); 只的試我們初始化class1
- a 和 b 是我們要帶入的參數,expected 則為我們預設會回傳的答案
- assert.areEuqal(expected,actual); 則是我們測試檔去執行
namespace ClassLibrary1.Tests
{
[TestClass()]
public class Class1Tests
{
[TestMethod()]
public void addTest()
{
//arrange
Class1 c = new Class1();
int a = 3;
int b = 4;
int expected = 7;
//act
int actual = c.add(a, b);
//assert
Assert.AreEqual(expected, actual);
//Assert.Fail();
}
}
}
參考In91大哥的撰寫單元測試的程式碼時,有個 3A 原則,來輔助設計測試程式,可以讓測試程式更好懂。
3A 原則如下:
- Arrange : 初始化目標物件、相依物件、方法參數、預期結果,或是預期與相依物件的互動方式。
- Act : 呼叫目標物件的方法。
- Assert : 驗證是否符合預期。
有看到Assert.Fail() 嗎?? 當我們一開始建立測試檔的時候,這是他自動產生的,主要是直接讓整個程式Fail ,所以當有這行時永遠都會執行不成功
接著如何執行測試呢?? 按右鍵 >> 執行測試 >> 便可以開始執行
參考資料:
1. In91 30天快速上手TDD