¿Æ¼¼ÐÐÕß

ÐÐÕßѧԺ תÐÍ˽¶­»á ¿Æ¼¼ÐÐÕßרÌⱨµÀ Íøºì´óÕ½¿Æ¼¼ÐÐÕß

֪ʶ¿â

֪ʶ¿â °²È«µ¼º½

ÖÁ¶¥ÍøÈí¼þƵµÀ»ù´¡Èí¼þErlangµ¥Ôª²âÊÔ Unit Test in Erlang

Erlangµ¥Ôª²âÊÔ Unit Test in Erlang

  • ɨһɨ
    ·ÖÏíÎÄÕµ½Î¢ÐÅ

  • ɨһɨ
    ¹Ø×¢¹Ù·½¹«ÖÚºÅ
    ÖÁ¶¥Í·Ìõ

Erlang±»³Æ×÷ÊÇ¡°¹¤Òµ¼¶µÄÓïÑÔ¡±£¬ÔÚ²âÊÔÁìÓò£¬ÀíÓ¦ÊÇÓÐÏ൱³ÉÊì¶ÈµÄ¡£»¹ÓÐ Erlang QuickCheck ÊÇÒ»¸öcommercial µÄ²âÊÔ¹¤¾ß£¬ÔÛÃÇÖ§³Ö opensource ÕâÀï¾Í²»±íÁË¡£

×÷Õߣº À´Ô´£ºLUPA¿ªÔ´ÉçÇø¡¾Ô­´´¡¿ 2008Äê6ÔÂ12ÈÕ

¹Ø¼ü×Ö£º Erlang µ¥Ôª²âÊÔ Linux

  • ÆÀÂÛ
  • ·ÖÏí΢²©
  • ·ÖÏíÓʼþ

¡¡¡¡Erlang±»³Æ×÷ÊÇ¡°¹¤Òµ¼¶µÄÓïÑÔ¡±£¬ÔÚ²âÊÔÁìÓò£¬ÀíÓ¦ÊÇÓÐÏ൱³ÉÊì¶ÈµÄ¡£¶ø£¬JoeÀÏÏÈÉú±¾ÈË£¬Ò²ÊdzçÉС°ÄòâÊÔ½á¹û˵»°¡±µÄÈË£¨ÔÚ¡¶Programming Erlang¡·ÊéÖУ¬ÉÏÀ´¾Í¸ã²âÊÔ£¬È»ºóÔÙ¿ª½²µÄÀý×ӱȱȽÔÊÇ£©¡£¾ÍÁ¬ Erlang/OTP ±¾ÉíµÄ´úÂëÖÊÁ¿Ò²ÊÇÓÐÑÏÃܵIJâÊÔ×÷Ϊ±£Õϵġ£ËùÒÔ£¬Èç¹ûÔÚErlangÁìÓò£¬Äã¼ûµ½Ô¶±ÈÆäËûÓïÑÔΪ¶àµÄ²âÊÔÏà¹Ø¹¤¾ß¡¢¿ò¼Ü¡¢°ü£¬Ë¿ºÁÒ²²»Ó¦¸Ã¸Ðµ½¾ªÆæ¡£ÏÂÃ棬ÎÒÃǾÍÀ´¿´¿´¡°ErlangµÄ²âÊÔ±øÆ÷Æס±ÖУ¬¶¼ÓÐʲôºÃ¼Ò»ï¡£

¡¡¡¡Ê×ÏÈÊÇ´óÃû¶¦¶¦µÄ Test_Server£¬ÐèҪ˵Ã÷µÄÊÇ Erlang/OTP ×ÔÉí´úÂëµÄ¼¸Ç§¸ö Test Case ¾ÍÊǹ¹½¨ÔÚËüµÄ»ù´¡Ö®ÉÏ¡£Test_Server µÄ¹¦ÄÜ¿ÉνÃæÃæ¾ãµ½£¬ÈÃÈËÑÛ»¨çÔÂÒ£¬´Ó¼òµ¥µÄ²âÊÔÈÎÎñ£¬µ½¶Ô¶à»·¾³ÏµIJâÊÔ£¬ÄËÖÁ¶ÔǶÈëʽϵͳ½øÐвâÊÔ£¬Ã»ÓÐËü²»ÔÚÐеġ£µ«Ò²ÕýÒòΪ´Ë£¬Ê¹ÓÃÉÔÏÓ¸´ÔÓ£¬±ÈÈç±ØÐë´Ó Erlang/OTP µÄÔ´ÂëÀ´¹¹½¨ºÍ±àÒë Test_Server £¬ÓÖ±ÈÈç½ÏΪ¸´Ô case ¶¨Òå¡£

¡¡¡¡È»ºóÊÇ Yet Another ϵÁУ¬Â¡ÖØÍƳö£ºyatsy¡ª¡ªYet Another Test Server (ß×£¿×îºóÒ»¸ö y ÊÇÄÄÀïÀ´µÄÄØ£¿)£¬ yatsy ºÍ test_server µÄÓï·¨ÍêÈ«Ò»Ö£¬¹¦ÄÜ´óÖÂÏ൱£¬Ëù²»Í¬µÄÊÇ£º yatsy ÊÇ host ÔÚ google É쵀 opensource µÄÏîÄ¿£¬¶ø test_server ÊÇ ericsson µÄ²úÆ·£¨Ëä˵Ҳ¸øÁË sourcecode µ«²»ÊÇ public repository £¬ÕâËãÄÄÃÅ×ÓÇø±ð£¿£©£¬ÁíÒ»¸öÇø±ðÊÇ yatsy ºÍ yaws ÓкܺõĽáºÏ£¨¶¼ÊÇ Yet Another Ò»¼ÒµÄÂ£¬Ö÷ÒªÓÃÀ´Éú³É report ¡£

¡¡¡¡ÁíÍ⣬»¹ÓÐ Erlang QuickCheck ÊÇÒ»¸ö commercial µÄ²âÊÔ¹¤¾ß£¬ÔÛÃÇÖ§³Ö opensource ÕâÀï¾Í²»±íÁË¡£

¡¡¡¡ÎÒ¸öÈË×îϲ»¶µÄСÇɹ¤¾ßÊÇ EUnit£¬¼òµ¥£¬Ò×Ó᣶ÔÓÚ¡°·Ç»ð¼ý¿Æ¼¼¡±µÄÆÕͨ³ÌÐòÔ±À´Ëµ£¬¼ò¼òµ¥µ¥µÄ¾ÍºÃ¡£60ÃëÈëÃÅÈçÏ£º

¡¡¡¡-module(fib).

¡¡¡¡-export([fib/1]).

¡¡¡¡%% ¼ÓÁËÕâ¾ä£¬»á×Ô¶¯¶à³öÀ´Ò»¸ö test() ·½·¨£¬²âÊÔÖ±½ÓÅÜ fib:test() ¾ÍºÃÁË¡£

¡¡¡¡-include_lib("eunit/include/eunit.hrl").

¡¡¡¡fib(0)-> 1

¡¡¡¡fib(1)-> 1

¡¡¡¡fib(N) whenN>1-> fib(N-1)+ fib(N-2).

¡¡¡¡%% xxx_test() ÊDzâÊÔ case £¬test() »áµ÷ÓÃÿһ¸ö case ¾ÍÏñ junit Ò»Ñù

¡¡¡¡fib_test()-> fib(0)== 1.

¡¡¡¡%% xxxx_test_() case Éú³ÉÆ÷£¬Ã¿¸ö ?_assert(...) ¶¼»áÉú³ÉÒ»¸ö case º¯Êý

¡¡¡¡%% Ò»°ãÓÃÕâ¸ö¾Í¿ÉÒÔÁË

¡¡¡¡fib_test_()->

¡¡¡¡[?_assert(fib(0)== 1),

¡¡¡¡_assert(fib(1)== 1),

¡¡¡¡_assert(fib(2)== 2),

¡¡¡¡_assert(fib(3)== 3),

¡¡¡¡_assert(fib(4)== 5),

¡¡¡¡_assert(fib(5)== 8),

¡¡¡¡_assertException(error, function_clause, fib(-1)),

¡¡¡¡_assert(fib(31)== 2178309)

¡¡¡¡].

¡¡¡¡setup()->

¡¡¡¡io:format("Setup called", []).

¡¡¡¡%% Èç¹ûÐèÒª setup ¾ÍÕâô¸É

¡¡¡¡do_test_()->

¡¡¡¡{setup, fun setup/0, [?_assert(1=:=0)]}.

¡¡¡¡¾ÍÕâô¶àÁË£¬¼ò½àÃ÷¿ì°É¡£

¡¡¡¡ÉÏÃæÊǹ¦ÄܲâÊÔ»òÕß˵µ¥Ôª²âÊÔ£¬ÄÇô£¬ÔÚÐÔÄܲâÊÔÉÏ£¬ÎÒÃÇÓ榶¦´óÃûºÍ¶¦¶¦´óÃûµÄ Tsung£¨àÅ£¬Ë­ÖªµÀÕâ¸ö´ÊµÄÕýÈ··¢ÒôÊÇÔõÑùµÄ£¿£©¡£Õâ¸ö¶«Î÷£¬Áô´ýÈÕºó°³Ñ§Ï°µ½ÁËÔٺʹó¼Ò·ÖÏí¡£

    • ÆÀÂÛ
    • ·ÖÏí΢²©
    • ·ÖÏíÓʼþ