是否可以按随机顺序进行公共测试运行测试用例



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

随机化测试顺序

来自Ruby的Rspec以随机顺序运行测试,我希望在CommonTest中也有同样的功能。有人知道在普通测试中是否有随机化测试顺序的方法吗?我在文档中没有看到任何关于随机化测试顺序的内容。

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

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

提前感谢!

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

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

如果指定了shuffle,则组中的案例将按随机顺序执行。这份官方文件中有一些很好的例子。

最新更新