是否可以随机排列 Common Test 运行 个测试用例?

Is it possible to have Common Test run test cases in a random order?

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

随机测试订单?

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

all/0groups/0 中随机化 Return 个值?

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

提前致谢!

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

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

如果指定shuffle,组中的cases会随机执行。 this 官方文档中有很好的示例。