使用Xunit來進行單元測試

2021-09-08 18:29:19 字數 1659 閱讀 7649

不管你愛與不愛,單元測試對於乙個軟體的長治久安還是必不可少的一環。在visual studio 2012後,vs中的測試瀏覽器也能與第三方的整合了,用起來還是非常方便的。目前在.net框架下的測試工具主要有nunit、內建的mstest以及xunit這三個工具,本文就簡單的介紹一下如何在vs中使用xunit這個測試框架的後起之秀。

安裝xunit:

xunit的安裝現在不需要外掛程式支援了,直接使用nuget安裝如下兩個庫即可:

編寫測試用例:

乙個簡單的測試用例如下:

public class testclass1

[fact]

public void testfail()

}執行測試用例

在測試瀏覽器中執行runall即可(修改後不用編譯,它會自動編譯)

測試方式說明:

宣告測試用例:

xunit裡面不需要testclass之類attribute來標記測試用例類,只需要滿足如下條件即可:

斷言:assert類用來驗證測試測試函式的輸出結果。

assert.equal(3, math.max(3, 2));

也可以使用一些擴充套件的斷言庫,常用的就是xunit.should庫,它是以擴充套件函式的方式進行驗證,看起來更加舒服。

pm> install-package xunit.should

math.max(3, 2).shouldbe(3);

不過,這個庫和新版本的xunit適配不是很好,我這裡寫了乙個簡單的版本: 

static class assertextension

', 期望值是 ''";

throw new invalidoperationexception(msg);

}public static void shouldnotbe(this t value, t notexprected)

' ";

throw new invalidoperationexception(msg);

}static string format(object value)

}

構建和析構:

xunit裡面並不是通過setup和teardown標記來表明測試用例的構建和析構操作,它每次執行測試用例的時候都會外掛程式測試用例類,執行完成後,如果其實現了idispose介面,則會呼叫dispose函式,更加簡潔明瞭。也就是說:

異常測試

xunit並不是通過attribute來標記異常捕獲的,而是直接使用assert.throws斷言函式來驗證異常。

public class testclass1

void operation()

}更改測試用例名稱:

[fact(displayname = "max函式測試")]

跳過測試用例:

[fact(skip ="重構未完成")]

分組:[trait("group", "category")]

使用Xunit來進行單元測試

不管你愛與不愛,單元測試對於乙個軟體的長治久安還是必不可少的一環。在visual studio 2012後,vs中的測試瀏覽器也能與第三方的整合了,用起來還是非常方便的。目前在.net框架下的測試工具主要有nunit 內建的mstest以及xunit這三個工具,本文就簡單的介紹一下如何在vs中使用x...

使用Xunit進行單元測試

1.新建乙個類庫專案 2.通過nuget引入xunit,shouldly,xunit.runner.visualstudio三個程式包。3.編寫 public class class1 public string reverse string str public class class1tests...

單元測試 Xunit

pm install package xunit 正在還原 e xunit xunittestproject1 hospital.test.csproj 的包.get ok 292毫秒 get ok 97毫秒 正在安裝 system.threading.tasks.extensions 4.3.0。...