使用EUnit進行單元測試

2021-10-01 01:14:13 字數 2271 閱讀 9066

為了寫乙個好的產品,必定離不開完善的

測試

最近開始籌畫專案,因此

單元測試必不可少,一定要在開始的時候把測試做好,從下到上才能讓產品更加堅固。

我們選擇使用eunit進行單元測試。使用eunit的好處:減少**的修改;提高開發速度;有利於介面與實現分離;有利於系統整合;還有測試本身可以作為一種文件。

2,將整個eunit目錄放到你的erlang安裝目錄下的lib目錄中。也可以使用通過code:add_path/1或者其他編譯選項指明eunit的路徑,但是不是很方便。

3,在你的module中新增: -include_lib("eunit/include/eunit.hrl"). 這樣就引入了eunit的標頭檔案,此時你的module具有了下面的特性:自動的將以"_test"結尾的函式作為測試函式;為你的module新增並匯出了test/0函式;為你提供了豐富的

testmacro。(自動匯出test函式,是通過compile指示符的parse_transform選項進行處理)

工作

在我們要測試的module中我們加入乙個函式:

basic_test() ->

assert(1 == 1).

好了,編譯module,隨後執行m:test(),進行單元測試,我們會看到

test successful.

的提示。測試ok。

這裡bsic_test/0會在執行test/0的時候呼叫,我們也可以把basic_test/0寫成另一種形式:

basic_test_() ->

fun() ->  assert(1 == 1) end.

以"_test_"結尾的函式,在eunit中稱為「test generation function",測試生成函式,

它返回乙個或乙個函式list,eunit會依次執行每個函式。為了讓**更緊湊簡潔,

我們又有了另乙個macro:_test,這樣上面的test可以變成這樣:

basic_test_() ->

_test( assert(1 == 1)).

是不是**少一些了?好的讓我們再進一步,我們使用另乙個macro:_assert:

basic_test_() ->

_assert(1 == 1).

怎麼樣,很簡單了吧,好的,比如我有一系列的內容要測試,我就可以簡單的寫成這樣:

basic_test_() ->

[ _assert(1 == 1),

_assert(2 == 2),

_assertequal(3, 3),

_assertmatch(4,  4),

_assertexception(throw, a, throw(a))].

我們非常容易的就測試了某個表示式是否為true,某兩個值是否相等assertequal

(注:這裡使用=:=進行判斷,因此assertequal(3, 3.0)不會測試通過),

某個表示式是否匹配,是否產生指定的異常等。

好了,暫時就這些基本的東西,更多的內容檢視eunit的幫助:

update:

r12b-5中,eunit作為乙個標準的lib被加入,eunit中提供了一些有用的macro,如:

let(var,arg,expr)

等效於 (fun(var) -> (expr) end)(arg)

用法: l =  let(l1, [1, 2, 3], lists:reverse(l1))

if(cond,truecase,falsecase)

用法: g =  if(a >= b, a, b)

形如_test()的函式,作為乙個test 單元

形如_test_()的函式作為test generator,其用來產生test單元,其結尾表示式可以為:

單個形如 _***的測試,表示乙個test單元

也可以為乙個list(可以為deep list),list進行flatten後,長度表示test單元數目如下面**表示五個測試單元:

basic_test() ->

assert([1, 2] = lists:reverse([2, 1]).

basic_test_() ->

[ _assert(true),

_assertnot(false),

[  _assert(1 == 1.0),

_assert(true)

]

].

使用Xunit進行單元測試

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

使用MS Test進行單元測試

ms test也可以方便的進行單元測試,可以通過visual studio很方便的建立單元測試。新增對待測試工程的引用,即可方便的開始單元測試。最基本的一些測試使用如下 using system using microsoft.visualstudio.testtools.unittesting n...

使用VisualStudio進行單元測試之一

使用visualstudio中的單元測試功能,可以很方便的建立單元測試專案 編寫單元測試 以及執行單元測試。而如何在visualstudio中使用單元測試功能,就是本文和後面幾篇想要說的了。1.建立測試專案 在建立測試專案之前,我們還需要有乙份待測試的 下面的是我準備的一小段 namespace b...