我为我编写的Erlang应用程序提供了几十个通用测试套件模块。所有的测试都通过了,但我觉得测试套件非常脆弱。重新排序测试会导致其中一些测试失败。我没有阅读公共测试文档中的依赖性章节,而且我经常在单元测试中对应用程序状态进行假设。现在我想让我的测试套件更加健壮。
随机化测试顺序
来自Ruby的Rspec以随机顺序运行测试,我希望在CommonTest中也有同样的功能。有人知道在普通测试中是否有随机化测试顺序的方法吗?我在文档中没有看到任何关于随机化测试顺序的内容。
随机化all/0
和groups/0
的返回值
我还考虑过更改all/0
和groups/0
回调的输出。现在他们只返回硬编码列表。也许我可以随机化元素的顺序,让它们每次以不同的顺序运行?有没有人有过在Common test中通过更改回调返回值来随机化测试顺序的经验?我还需要一种方法来按照导致测试失败的顺序重新运行测试,就像Rspec的--seed标志一样。
提前感谢!
在定义测试组时使用shuffle
或{shuffle, Seed}
属性可能会有所帮助,如下所示:
groups() ->
[{group1, [shuffle], [test1, test2, test3]},
{group2, [shuffle], [test1, test2, test3]}].
如果指定了shuffle,则组中的案例将按随机顺序执行。这份官方文件中有一些很好的例子。