7

对于我编写的 Erlang 应用程序,我有几十个 Common Test 测试套件模块。所有的测试都通过了,但我觉得测试套件非常脆弱。重新排序测试会导致其中一些测试失败。我没有阅读Common Test 文档中的依赖项章节,并且我经常对单元测试中的应用程序状态做出假设。现在我想让我的测试套件更加健壮。

随机化测试顺序?

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

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

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

提前致谢!

4

1 回答 1

9

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

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

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

于 2016-01-05T06:49:40.120 回答