[C#.NET] 用了 Fluent Assertions,我的測試程式碼也會說話
Fluent Assertions 是一個能讓你的單元測試變得更容易閱讀的 API,主要以 Should 貫穿全場,口語化的寫法讓你能更貼近使用者需求,強大的是,只要想得到的型別幾乎都能測
它主要是擴充方法,並支援多種測試框架,下圖出自官網
Should 針對多種型別進行擴充,所以幾乎啥都能測,反編譯這種強大的 API 真的會令人很興奮
準備動作
- 從 Nuget 上安裝 Fluent Assertions
- using FluentAssertions;
Should
貫穿全場的 Should 關鍵字,以下範例出自官網,
翻成中文:運算結果 應 開始有 "AB" 且結束有"HI" 且包含"EF" 且有9個字
actual.Should().StartWith("AB").And.EndWith("HI").And.Contain("EF").And.HaveLength(9);
because 錯誤描述
每一個 Should() 後面帶的動作,都可以加上 because 描述
int expected = 2; int actual = calculate.Add(1, 1); actual.Should().Be(3, "1+1=2");
連錯誤訊息都變的好閱讀了
ShouldBeEquivalentTo
比較兩個物件,這裡比的是物件裡的狀態
{ public int Id { get; set; } public string Name { get; set; } } [Test] public void Test() { var m1 = new Member() { Id = 1, Name = "111" }; var m2 = new Member() { Id = 3, Name = "211" }; m1.ShouldBeEquivalentTo(m2); }
如下圖,比較失敗的錯誤訊息
如下圖,比較兩個集合失敗訊息
如下圖,比對某個物件是否在集合理,Contain 裡面放的是搜尋條件
結論
個人認為,其實官網所提供的功能大都能用現行的語法解決,但 Fluent Assertions 提供了更人性化的程式碼語意,以往都是用 Assert 打通關,現在可以嘗試使用人話說程式。
物件與集合的比較,也是令我陶醉亮點之一阿。
文章出自:http://www.dotblogs.com.tw/yc421206/archive/2015/06/20/151606.aspx
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET