亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区

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

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区
91久久精品久久国产性色也91| 九九精品在线观看| 国产精品亚洲一区二区三区| 免费精品视频一区二区三区| 黄色高清视频网站| 经典三级在线视频| 蜜臀精品一区二区| 国产拍精品一二三| 成人9ⅰ免费影视网站| www.亚洲天堂网| 91国内在线视频| 国产成人一区二区三区| 国产成人av在线播放| 日日骚av一区| 国产精品免费成人| 久久91亚洲精品中文字幕| 宅男噜噜99国产精品观看免费| 亚洲在线第一页| 性欧美激情精品| 欧美亚洲伦理www| 国产日产欧美精品| 高清视频在线观看一区| 91精品国产精品| 日韩一区视频在线| 欧美精品生活片| 亚州精品天堂中文字幕| 日韩精品极品视频在线观看免费| 国内成+人亚洲| 91久久精品日日躁夜夜躁国产| 久久国产欧美精品| 欧美另类第一页| 亚洲精蜜桃久在线| 男人天堂av片| 波多野结衣成人在线| 九九九九久久久久| 精品免费国产| 亚洲色精品三区二区一区| 日本一区二区久久精品| 免费一级特黄毛片| 国产精彩视频一区二区| 国产精品久久久久久久久久小说| 一区二区三区av| 欧美欧美一区二区| 国产精品88久久久久久妇女| 国产精品嫩草视频| 性色av一区二区咪爱| 国产日韩欧美电影在线观看| 色偷偷88888欧美精品久久久 | 青草视频在线观看视频| 国产日韩在线看片| 久久精品欧美| 在线观看国产一区| 精品一区二区三区无码视频| 久久久99精品视频| 最新av在线免费观看| 欧美精品一区二区三区四区五区 | 亚洲国产精品毛片| 免费国产成人看片在线| 久久免费视频观看| 欧美日产国产成人免费图片| 青青草国产精品| 国产精品99久久久久久久久| 九九久久精品一区| 激情综合网俺也去| 久久久久一区二区| 丁香五月网久久综合| 国产情侣第一页| 国产精品狠色婷| 欧美午夜欧美| 日韩在线视频网| 天堂资源在线亚洲资源| 成人免费观看cn| 成人444kkkk在线观看| 青青在线视频一区二区三区| 久久人人爽爽人人爽人人片av| 久久久久久高潮国产精品视| 国产视频一区二区视频| 国产精品视频在线免费观看| 日韩视频免费播放| 久久99导航| 三级三级久久三级久久18| 97人人爽人人喊人人模波多| 欧美日本亚洲视频| 国产麻豆一区二区三区在线观看 | 久久噜噜噜精品国产亚洲综合| 亚洲一区二区三区久久| av日韩中文字幕| 国产av不卡一区二区| 国产日韩一区二区在线观看| 国产精品福利小视频| 麻豆传媒一区二区| 欧美性受xxxx黑人猛交| 国产精品高潮呻吟久久av无限 | 高清一区二区三区日本久 | 久久国产精品精品国产色婷婷| 丝袜一区二区三区| 一区二区三区欧美在线| 欧美自拍大量在线观看| 精品人妻人人做人人爽| 久久久久国产精品www| 亚洲精品日韩激情在线电影| 色狠狠久久av五月综合| 久久国产乱子伦免费精品| 日本亚洲欧美三级| 久久久久欧美| 欧美诱惑福利视频| 久久精品国产91精品亚洲| 欧美亚洲日本网站| 日韩一区二区三区国产| 黄色片视频在线免费观看| 国产精品大陆在线观看| 国产精品一色哟哟| 欧美一区二区三区免费视| 久久久久天天天天| 免费看黄色a级片| 色与欲影视天天看综合网| 国产精品午夜一区二区欲梦| 亚洲二区自拍| 精品国内自产拍在线观看| 国产在线xxxx| 亚洲色图自拍| 日韩视频免费观看| 国产色综合一区二区三区| 欧美激情小视频| 久久偷窥视频| 黄色www网站| 亚洲欧美日韩综合一区| www.欧美三级电影.com| 国产一区二区三区小说| 亚洲精品乱码视频| 久久精视频免费在线久久完整在线看| 国产欧美一区二区三区不卡高清| 亚洲精品一区国产精品| 精品国产一区二区在线| 国产精品在线看| 日韩午夜视频在线观看| 欧美日韩第一页| www.日本久久久久com.| 国产免费裸体视频| 日韩和欧美的一区二区| 精品国产一区二区三区免费| 久久久亚洲影院你懂的| 精品视频在线观看| 日韩资源av在线| 久久伊人91精品综合网站| 777久久精品一区二区三区无码 | 日本免费a视频| 欧美激情一区二区三级高清视频| 国产ts一区二区| 官网99热精品| 免费久久99精品国产自| 色欲色香天天天综合网www| 精品中文字幕在线2019| 久久久久免费精品国产| 99在线精品免费视频| 欧美 日韩 激情| 视频一区二区三| 中文网丁香综合网| 国产精品成人久久久久| www国产91| 久久精品ww人人做人人爽| 不卡一卡2卡3卡4卡精品在| 精品少妇一区二区三区在线| 日韩美女中文字幕| 视频一区在线免费观看| 亚洲伊人久久大香线蕉av| 国产精品久久久久久久久久久不卡 | 国产欧美精品一区二区三区| 欧美日韩精品不卡| 日韩精品在线观看av| 无码人妻h动漫| 亚洲美女网站18| 亚洲一区二区三区欧美| 中文字幕无码精品亚洲35| 精品国产aⅴ麻豆| 国产精品第一第二| 国产精品日本一区二区| 国产精品日韩一区二区免费视频 | 成年丰满熟妇午夜免费视频| 国产欧美日韩免费| 国产中文字幕乱人伦在线观看| 欧洲成人在线观看| 日韩精品在线中文字幕| 人人妻人人澡人人爽欧美一区双| 熟女视频一区二区三区| 亚洲成人网上| 午夜免费福利小电影| 亚洲乱码一区二区三区三上悠亚| 亚洲天堂电影网| 欧美猛交免费看| 欧美成人精品在线观看| 国产精品久久久av| 成人97在线观看视频| 色与欲影视天天看综合网| 欧美激情在线有限公司| 欧美日韩爱爱视频| 亚洲综合激情五月| 日韩中文字幕一区| 日韩wuma| 精品日本一区二区三区在线观看 |