更人性化的测试邮件使用Erlang EUnit?(More human-friendly tests

2019-09-27 16:33发布

我习惯了JavaScript的测试,尤其是它的BDD框架和库像柴在那里我可以描述一个人性化的方式测试和使用字符串名称的测试,如“用户配置- >更新名字”,然后看到这些消息作为输出时运行测试。

是否有可能写二郎测试以更自然的方式,或者至少,在整合描述运行过程中的测试,而不仅仅是让他们为评论,但看到一个测试失败的名字吗?

Answer 1:

是。 加入说明试验,试验需要“测试对象”,而不是简单的测试。 例如,更改此测试:

foo_test() ->
    run_foo(),
    ensure_foo_works().

为此:

foo_test_() ->
    ?_test(
      begin
        run_foo(),
        ensure_foo_works()
      end).

也就是说,该功能应该与结束的名字_test_ ,并且测试的机构应在包裹?_test宏。 还有其他如“包装宏”开始用下划线; 例如,一个简单的断言可以改写如下:

%% before
check_foo_test() ->
    ?assertEqual(ok, foo()).

%% after
check_foo_test_() ->
    ?_assertEqual(ok, foo()).

一旦你有一个“测试对象”,你可以在一个元组,其中第一个元素是一个字符串,它包:

foo_test_() ->
    {"Ensure that foo works",
     ?_test(
       begin
         run_foo(),
         ensure_foo_works()
       end)}.

check_foo_test_() ->
    {"Check that foo is ok", ?_assertEqual(ok, foo())}.

在测试失败时这些描述将被打印。 如果您在详细模式下运行eunit,当测试执行以及它们将被打印出来。



文章来源: More human-friendly tests messages with Erlang EUnit?
标签: erlang eunit