<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

    Erlang被稱作是“工業(yè)級的語言”,在測試領(lǐng)域,理應(yīng)是有相當(dāng)成熟度的。而,Joe老先生本人,也是崇尚“拿測試結(jié)果說話”的人(在《Programming Erlang》書中,上來就搞測試,然后再開講的例子比比皆是)。就連 Erlang/OTP 本身的代碼質(zhì)量也是有嚴(yán)密的測試作為保障的。所以,如果在Erlang領(lǐng)域,你見到遠(yuǎn)比其他語言為多的測試相關(guān)工具、框架、包,絲毫也不應(yīng)該感到驚奇。下面,我們就來看看“Erlang的測試兵器譜”中,都有什么好家伙。

    首先是大名鼎鼎的 Test_Server ,需要說明的是 Erlang/OTP 自身代碼的幾千個 Test Case 就是構(gòu)建在它的基礎(chǔ)之上。Test_Server 的功能可謂面面俱到,讓人眼花繚亂,從簡單的測試任務(wù),到對多環(huán)境下的測試,乃至對嵌入式系統(tǒng)進(jìn)行測試,沒有它不在行的。但也正因為此,使用稍嫌復(fù)雜,比如必須從 Erlang/OTP 的源碼來構(gòu)建和編譯 Test_Server ,又比如較為復(fù)雜的 case 定義。

    然后是 Yet Another 系列,隆重推出:yatsy——Yet Another Test Server (咦?最后一個 y 是哪里來的呢?), yatsy 和 test_server 的語法完全一致,功能大致相當(dāng),所不同的是: yatsy 是 host 在 google 上的 opensource 的項目,而 test_server 是 ericsson 的產(chǎn)品(雖說也給了 sourcecode 但不是 public repository ,這算哪門子區(qū)別?),另一個區(qū)別是 yatsy 和 yaws 有很好的結(jié)合(都是 Yet Another 一家的嘛),主要用來生成 report 。

    另外,還有 Erlang QuickCheck 是一個 commercial 的測試工具,咱們支持 opensource 這里就不表了。

    我個人最喜歡的小巧工具是 EUnit ,簡單,易用。對于“非火箭科技”的普通程序員來說,簡簡單單的就好。60秒入門如下:

    1. -module(fib).
    2. -export([fib/1]).
    3. %% 加了這句,會自動多出來一個 test() 方法,測試直接跑 fib:test() 就好了。
    4. -include_lib("eunit/include/eunit.hrl").
    5.  
    6. fib(0) -> 1;
    7. fib(1) -> 1;
    8. fib(N) when N > 1 -> fib(N-1) + fib(N-2).
    9.  
    10. %% xxx_test() 是測試 case ,test() 會調(diào)用每一個 case 就像 junit 一樣
    11. fib_test() -> fib(0) == 1.
    12.  
    13. %% xxxx_test_() case 生成器,每個 ?_assert(...) 都會生成一個 case 函數(shù)
    14. %% 一般用這個就可以了
    15. fib_test_() ->
    16.     [?_assert(fib(0) == 1),
    17.      ?_assert(fib(1) == 1),
    18.      ?_assert(fib(2) == 2),
    19.      ?_assert(fib(3) == 3),
    20.      ?_assert(fib(4) == 5),
    21.      ?_assert(fib(5) == 8),
    22.      ?_assertException(errorfunction_clausefib(-1)),
    23.      ?_assert(fib(31) == 2178309)
    24.     ].
    25.  
    26. setup() ->
    27.     io:format("Setup called"[]).
    28.  
    29. %% 如果需要 setup 就這么干
    30. do_test_() ->
    31.    {setupfun setup/0[?_assert(1=:=0)]}.

    就這么多了,簡潔明快吧。

    上面是功能測試或者說單元測試,那么,在性能測試上,我們有鼎鼎大名和鼎鼎大名的 Tsung (嗯,誰知道這個詞的正確發(fā)音是怎樣的?)。這個東西,留待日后俺學(xué)習(xí)到了再和大家分享。 :D

    posted on 2009-10-27 15:48 ivaneeo 閱讀(304) 評論(0)  編輯  收藏 所屬分類: erlang-分布式語言
    主站蜘蛛池模板: 国产精品亚洲综合五月天| 成人亚洲性情网站WWW在线观看| 亚洲中文字幕无码久久2020| 亚洲视屏在线观看| 精品亚洲aⅴ在线观看| 亚洲视频一区二区三区| 亚洲精品91在线| 亚洲一欧洲中文字幕在线| 亚洲国产精品久久网午夜| 亚洲一区二区三区亚瑟| 麻豆狠色伊人亚洲综合网站| 亚洲午夜无码久久久久小说| 亚洲精品无码不卡在线播放| 亚洲av无码片vr一区二区三区 | 在线观看免费人成视频色9| 精品熟女少妇AV免费观看| 91香蕉视频免费| 宅男666在线永久免费观看| 又大又硬又爽免费视频| 亚洲熟伦熟女新五十路熟妇 | 免费一级做a爰片久久毛片潮喷| 免费国产a国产片高清网站| 久久亚洲2019中文字幕| 亚洲国产精彩中文乱码AV| 久久夜色精品国产噜噜噜亚洲AV | 亚洲日本视频在线观看| 亚洲日韩国产欧美一区二区三区| 亚洲AV无码之国产精品| 九九久久国产精品免费热6| 免费观看久久精彩视频| 99无码人妻一区二区三区免费| 久久综合AV免费观看| 亚洲国产香蕉人人爽成AV片久久| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 美女羞羞喷液视频免费| 岛国精品一区免费视频在线观看 | 日本亚洲中午字幕乱码| 特级做A爰片毛片免费看无码| 亚洲人成免费网站| 国产精品色午夜视频免费看| 亚洲伊人色欲综合网|