是否可以以随机顺序运行Common Test运行测试用例?

时间:2016-01-04 19:34:45

标签: unit-testing random erlang common-test

我为我编写的Erlang应用程序提供了几十个Common Test测试套件模块。所有测试都通过了,但我觉得测试套件非常脆弱。重新排序测试会导致其中一些失败。我没有阅读dependencies chapter in the Common Test documentation,我经常对单元测试中的应用状态做出假设。现在我想让我的测试套件更加强大。

随机化测试订单?

来自Ruby,其中Rspec以随机顺序运行测试,我希望在Common Test中具有相同的功能。有没有人知道是否有办法在Common Test中随机化测试顺序?我没有在文档中看到有关随机化测试顺序的任何内容。

all/0groups/0随机化返回值

我还想过改变all/0groups/0回调的输出。现在他们只返回硬编码列表。也许我可以随机化元素的排序并让它们每次以不同的顺序运行?有没有人通过更改Common Test中的回调返回值来随机化测试顺序?我还需要一种方法来按照导致它们失败的顺序重新运行测试Rspec's --seed flag

提前致谢!

1 个答案:

答案 0 :(得分:8)

在定义测试组时使用shuffle{shuffle, Seed}属性可能会有所帮助,这样:

groups() ->
    [{group1, [shuffle], [test1, test2, test3]},
     {group2, [shuffle], [test1, test2, test3]}].

如果指定了shuffle,则组中的个案将以随机顺序执行。 this官方文档中有很好的例子。