為了寫乙個好的產品,必定離不開完善的
測試。
最近開始籌畫專案,因此
單元測試必不可少,一定要在開始的時候把測試做好,從下到上才能讓產品更加堅固。
我們選擇使用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...