麻豆传媒视频在线,国产91精品不卡视频,欧美jizz19性欧美,污视频网站在线观看,91涩漫在线观看,伊人发布在线,九色porny丨首页在线,福利视频一区,久久av网址,久久人人视频

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > 使用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.     ].  

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
在线免费观看日韩欧美| 一本久久知道综合久久| 成人污版视频| 国产一区二区三区不卡视频网站| 国内精品99| 成人黄色在线视频| 亚洲午夜激情av| 亚洲精品久久久久国产| 国产+人+亚洲| 日本五码在线| 欧美黑人巨大xxxxx| 精品九九在线| 国产成人午夜精品影院观看视频 | 91在线一区二区| 在线免费精品视频| 久久综合色88| 中文字幕免费在线| 国产福利亚洲| 韩国在线一区| 中文字幕在线视频一区| 亚洲成人精品久久| 国产欧美一区二区白浆黑人| 黄污视频在线观看| 日韩综合在线| 国产视频一区二区三区在线观看| 欧美一区二区视频在线观看| 青草青草久热精品视频在线观看| 免费在线观看av片| 国产中文字幕一区二区三区| 成人国产一区二区三区精品| 制服丝袜亚洲精品中文字幕| 国产精品久久久久久久久粉嫩av | 亚洲蜜桃视频| 国产精品的网站| 中文国产成人精品| 国产二区在线播放| 精品视频99| 国产性天天综合网| 中国日韩欧美久久久久久久久| 夜色福利资源站www国产在线视频| 狠狠久久伊人中文字幕| 美女视频黄频大全不卡视频在线播放| 亚洲国产成人高清精品| 欧美激情视频三区| 高清精品在线| 久久久久久夜| 6080午夜不卡| 两个人看的免费完整在线观看| 亚洲视频国产精品| 成人高清av在线| 亚洲欧美日本精品| 91se在线| 亚洲一级高清| 91精品福利在线| 国产日本欧美一区二区三区| 欧美三级一区| 91在线精品一区二区三区| 一区二区三区www| 欧美色图天堂| 老司机精品福利视频| 欧美日本免费一区二区三区| 91免费版在线观看| 成人免费看片39| 午夜精品久久久久久久蜜桃app| 国产成人一区三区| 国产精品视频一区二区三区综合| 成人动漫一区二区| 日韩在线观看成人| 午夜影院在线观看国产主播| 日本在线不卡视频| 亚洲国产精品字幕| a视频在线观看| 免费看欧美美女黄的网站| 日韩av网址在线观看| 天堂va在线| 国产精品99久久久久久久女警| 一区三区二区视频| 色一区二区三区| 国产高清精品久久久久| 亚洲欧洲在线看| 亚洲最大成人| 91麻豆高清视频| 久久久亚洲欧洲日产国码aⅴ| 亚洲人体在线| 国产精品国产三级国产aⅴ入口| 51精品在线观看| 试看120秒一区二区三区| 中文字幕一区二区三区av| 国产精品白丝jk喷水视频一区| 日本天堂一区| 精品久久久久久久久久ntr影视| 诱人的瑜伽老师3hd中字| 欧美一区免费| 精品国产精品一区二区夜夜嗨| 97视频在线观看网站| 青椒成人免费视频| 日韩一区二区在线视频| 欧美经典一区| 亚洲综合色丁香婷婷六月图片| 成人国产精品日本在线| 伊人色**天天综合婷婷| 欧美一区二区三区喷汁尤物| a天堂中文在线官网在线| 九一久久久久久| 欧美xxxx18性欧美| 婷婷成人在线| 69精品人人人人| 99色在线观看| 欧美激情在线观看视频免费| 国产日本欧美在线观看| 午夜精品久久| 一区二区福利视频| 国产精品xxxav免费视频| 色素色在线综合| 午夜av在线播放| 久久久99免费| 一级日本免费的| 日韩电影在线免费观看| 欧美人与性动交a欧美精品| 亚洲黄页在线观看| 欧美一区二区三区日韩| 91看片一区| 欧美日韩国产综合新一区 | 在线能看的av网址| 亚洲桃色在线一区| 婷婷婷国产在线视频| 国产一区二区伦理| 国产精品久久久久久av| 夜夜爽av福利精品导航| 久久香蕉国产线看观看av| 精品盗摄女厕tp美女嘘嘘| 亚洲成人久久一区| 日韩在线精品强乱中文字幕| 欧美婷婷六月丁香综合色| 345成人影院| 一本大道久久a久久综合婷婷 | 婷婷综合五月| 中文字幕在线亚洲| av一区二区高清| 亚洲精品电影网| 日韩精品成人在线观看| 欧美日韩国产综合久久| www.26天天久久天堂| 欧美伊人久久久久久久久影院| 中文字幕 在线观看| 福利视频导航一区| 久久91导航| 91精品在线观看入口| 欧美一区在线观看视频| 精品盗摄一区二区三区| 青青草原在线亚洲| 国产亚洲一区二区精品| 日韩中文字幕高清在线观看| 视频在线观看一区二区| 亚洲理论电影网| 7777kkkk成人观看| 欧美a一区二区| 国产视频资源| 久久综合九色综合欧美亚洲| av小片在线| 香港成人在线视频| 欧美激情福利| 日韩av在线网址| 天天综合国产| 欧美一区二区三区……| 精品一区二区免费视频| 日本大臀精品| 一区二区三区久久| 欧美啪啪网站| 亚洲毛片在线免费观看| 欧美日韩国产探花| 国产在线精品播放| 久久美女艺术照精彩视频福利播放| 黄页视频在线播放| 日本高清不卡视频| 久久久伦理片| 欧美高清在线观看| 国产一区二区三区视频在线播放| 日本福利在线观看| 欧美日韩在线影院| 色愁久久久久久| 91黑丝在线观看| 成人黄色在线看| 高清毛片在线观看| 亚洲国产又黄又爽女人高潮的| 欧美在线播放| 日本性视频网| 亚洲男人的天堂在线aⅴ视频| 欧美成人app| 国产亚洲欧美日韩一区二区| 免费国产自线拍一欧美视频| 在线观看视频污| 婷婷中文字幕综合| 日韩三级视频| 欧洲永久精品大片ww免费漫画| 97se亚洲国产综合在线| 免费福利视频一区二区三区| 亚洲天堂第二页| 国产一区视频网站| 超免费在线视频|