好男人天堂网,久久精品国产这里是免费,国产精品成人一区二区,男人天堂网2021,男人的天堂在线观看,丁香六月综合激情

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > 使用EUnit進行單元測試

使用EUnit進行單元測試
2010-01-13 23:17:42  作者:  來源:
為了寫一個好的產品,必定離不開完善的測試。

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

我們選擇使用EUnit進行單元測試。使用Eunit的好處:減少代碼的修改;提高開發速度;有利于接口與實現分離;有利于系統集成;還有測試本身可以作為一種文檔。

1,首次從http://support.process-one.net/doc/display/CONTRIBS/EUnit 獲取對應的SVN checkout路徑,http://svn.process-one.net/contribs/trunk/eunit,通過svn進行下載。

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

3,在你的module中添加: -include_lib("eunit/include/eunit.hrl"). 這樣就引入了eunit的頭文件,此時你的module具有了下面的特性:自動的將以"_test"結尾的函數作為測試函數;為你的module添加并導出了test/0函數;為你提供了豐富的test macro。(自動導出test函數,是通過compile指示符的parse_transform選項進行處理)

此時,我們的module已經具有了eunit賦予的一切權利。注意你從svn下載的代碼,沒有進行編譯,你需要進行編譯生成beam文件。由于本人是在windows下工作,編譯不是很方便,所以我就直接從這里下載了eunit的beam文件,放到eunit/ebin/目錄下。

在我們要測試的module中我們加入一個函數:
Erlang代碼 復制代碼
  1. basic_test() ->   
  2.      ?assert(1 == 1).  


好了,編譯module,隨后運行M:test(),進行單元測試,我們會看到
Test successful.
的提示。測試ok。

這里bsic_test/0會在執行test/0的時候調用,我們也可以把basic_test/0寫成另一種形式:
Erlang代碼 復制代碼
  1. basic_test_() ->   
  2.     fun() -> ?assert(1 == 1) end.  


以"_test_"結尾的函數,在EUnit中稱為“test generation function",測試生成函數,
它返回一個或一個函數list,EUnit會依次執行每個函數。為了讓代碼更緊湊簡潔,
我們又有了另一個macro:_test,這樣上面的test可以變成這樣:

Erlang代碼 復制代碼
  1. basic_test_() ->   
  2.     ?_test(?assert(1 == 1)).  


是不是代碼少一些了?好的讓我們再進一步,我們使用另一個macro:_assert:
Erlang代碼 復制代碼
  1. basic_test_() ->   
  2.     ?_assert(1 == 1).  


怎么樣,很簡單了吧,好的,比如我有一系列的內容要測試,我就可以簡單的寫成這樣:
Erlang代碼 復制代碼
  1. basic_test_() ->   
  2.     [?_assert(1 == 1),   
  3.      ?_assert(2 == 2),   
  4.      ?_assertEqual(33),   
  5.      ?_assertMatch(4,  4),   
  6.      ?_assertException(throw, a, throw(a))].  


我們非常容易的就測試了某個表達式是否為true,某兩個值是否相等assertEqual
(注:這里使用=:=進行判斷,因此assertEqual(3, 3.0)不會測試通過),
某個表達式是否匹配,是否產生指定的異常等。
好了,暫時就這些基本的東西,更多的內容查看EUnit的幫助:
http://svn.process-one.net/contribs/trunk/eunit/doc/overview-summary.html

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單元,其結尾表達式可以為:
單個形如?_xxx的測試,表示一個test單元
也可以為一個List(可以為Deep List),List進行flatten后,長度表示test單元數目如下面代碼表示五個測試單元:

Erlang代碼 復制代碼
  1. basic_test() ->   
  2.     ?assert([12] = lists:reverse([21]).   
  3.   
  4. basic_test_() ->   
  5.     [?_assert(true),   
  6.      ?_assertNot(false),   
  7.      [ ?_assert(1 == 1.0),   
  8.        ?_assert(true)   
  9.      ]   
  10.     ].  

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
久久精品大片| 亚洲精品中文字幕久久久久久| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 高清一级淫片a级中文字幕| 精品国产亚洲人成在线| 国产高清视频免费| 天天做人人爱夜夜爽2020| 国产美女在线一区二区三区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产不卡精品一区二区三区| 九九免费高清在线观看视频| 国产高清在线精品一区二区| 在线观看成人网 | 中文字幕Aⅴ资源网| 日本特黄特色aaa大片免费| 国产a毛片| 黄色短视频网站| 成人av在线播放| 麻豆系列 在线视频| 精品在线免费播放| 久久久久久久网| 久久精品人人做人人爽97| 毛片电影网| 欧美激情一区二区三区视频| 日韩av成人| 欧美另类videosbestsex高清| 成人免费一级毛片在线播放视频| 日韩中文字幕一区| 在线观看成人网 | 毛片高清| 精品视频一区二区三区免费| 99色视频在线观看| 精品久久久久久中文| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 精品在线视频播放| 黄色福利| 麻豆网站在线看| 成人免费观看视频| 日韩一级精品视频在线观看| 国产91精品一区二区| 欧美大片aaaa一级毛片| 国产国语在线播放视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 美女免费精品高清毛片在线视 | 国产a毛片| 午夜激情视频在线播放| 日韩中文字幕在线亚洲一区| 久久久久久久网| 99热精品一区| 精品久久久久久中文字幕一区| 精品国产一区二区三区久久久蜜臀| 欧美激情一区二区三区视频高清| 欧美激情一区二区三区在线 | 黄色免费三级| 精品久久久久久中文字幕一区 | 精品国产一区二区三区精东影业 | 91麻豆精品国产综合久久久| 欧美大片一区| 成人免费一级纶理片| 日日夜夜婷婷| 欧美另类videosbestsex久久| 你懂的福利视频| 天天色成人| 免费国产在线观看不卡| 一级女性全黄生活片免费| 日韩中文字幕在线亚洲一区| 亚洲www美色| 天天色色色| 精品国产一区二区三区久| 精品久久久久久中文字幕一区 | 二级特黄绝大片免费视频大片| 日韩一级黄色片| 精品视频在线观看一区二区 | 久久成人亚洲| 高清一级做a爱过程不卡视频| 天天做日日爱| 日韩在线观看视频网站| 99久久视频| 精品国产香蕉伊思人在线又爽又黄| 香蕉视频三级| 一a一级片| 欧美电影免费看大全| 精品国产一区二区三区久| 欧美日本韩国| 日韩免费在线观看视频| 一级毛片视频免费| 亚洲女初尝黑人巨高清在线观看| 九九热国产视频| 你懂的国产精品| 成人高清护士在线播放| 国产不卡在线播放| 可以在线看黄的网站| 欧美大片一区| 天天做日日爱| 超级乱淫伦动漫| 国产极品白嫩美女在线观看看| 美女免费精品视频在线观看| 天天做日日爱夜夜爽| 亚洲天堂在线播放| 欧美激情中文字幕一区二区| 超级乱淫伦动漫| 韩国三级一区| 韩国妈妈的朋友在线播放| 日韩在线观看视频网站| 精品美女| 欧美激情一区二区三区视频 | 国产成人精品影视| 日韩免费在线视频| 日韩字幕在线| 青草国产在线| 亚洲天堂免费| 国产视频久久久| 精品视频免费看| 午夜在线观看视频免费 成人| 亚洲精品永久一区| 成人影视在线观看| 欧美一级视频高清片| 国产福利免费观看| 日日夜夜婷婷| 欧美一级视频免费| 久草免费在线视频| 美女免费黄网站| 日本特黄一级| 精品视频在线观看一区二区 | 韩国三级香港三级日本三级| 欧美国产日韩久久久| 国产伦久视频免费观看 视频| 成人在免费观看视频国产| 国产不卡精品一区二区三区| 麻豆污视频| 日本在线不卡视频| 欧美爱爱网| 国产视频一区二区在线播放| 国产网站在线| 香蕉视频三级| 欧美大片a一级毛片视频| 亚洲天堂免费观看| 欧美激情中文字幕一区二区| 成人免费一级纶理片| 精品视频在线观看一区二区| 国产精品123| 精品国产亚洲人成在线| 99久久精品国产麻豆| 韩国毛片 免费| 日韩在线观看免费| 亚洲第一页色| 欧美a级大片| 国产视频一区二区在线观看| 精品视频一区二区| 高清一级毛片一本到免费观看| 精品国产香蕉在线播出| 黄色免费三级| 亚欧乱色一区二区三区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 久草免费资源| 国产一区二区高清视频| 国产韩国精品一区二区三区| 国产精品自拍亚洲| 国产综合91天堂亚洲国产| 中文字幕Aⅴ资源网| 久草免费在线色站| 青青久在线视频| 亚洲 欧美 91| 国产伦久视频免费观看视频| 欧美国产日韩久久久| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 精品久久久久久影院免费| 99色视频| 欧美一级视频高清片| 99久久精品国产国产毛片| 亚洲第一页色| 国产一级生活片| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产91丝袜在线播放0| 久久久久久久网| 欧美另类videosbestsex高清| 日韩专区亚洲综合久久| 一级女性大黄生活片免费| 在线观看导航| 韩国毛片免费大片| 国产综合成人观看在线| 韩国三级香港三级日本三级la| 天天做日日干| 国产一区二区高清视频| 成人av在线播放| 午夜欧美成人久久久久久| 午夜久久网| 免费国产在线观看不卡| 可以免费看污视频的网站| 99久久精品国产片| 亚洲 欧美 91| 九九精品在线播放| 国产麻豆精品hdvideoss| 日韩专区亚洲综合久久| 国产一区二区高清视频| 国产一区二区精品| 免费一级生活片| 你懂的福利视频| 久久国产精品只做精品| 在线观看导航|