我已经开始使用一个项目了,我发现一些单元测试依赖于另一个已经在它之前运行的事实。有没有办法检测这种测试而不是手动运行它们?在这个项目中有成千上万的测试,我做的并不是最有趣的事情。
答案 0 :(得分:2)
我担心NUnit对这个问题毫无帮助,尽管我经常想到一些能够检测依赖关系的功能。不过,这将是未来的事。
目前,这是我遵循的方法。我假设使用了控制台运行程序和NUnit 3.x。
将参数--workers=0
添加到命令行并验证问题是否仍然存在。该设置强制所有测试按顺序运行,排除了问题是由并行执行引起的可能性,这将是另一回事。
使用--where
选项选择部分测试夹具。如果你能做到这一点,选择大约一半是最好的。如有必要,请使用临时命名空间更改以使其更容易。
如果问题消失,请运行另一半测试。
此时,如果你很幸运,你已将问题缩小到一半的测试范围。返回步骤2,细分显示问题的一半。继续这种方法,二元搜索的变体,直到你有一个工具夹。此时,您应该能够通过检查或调试来发现问题。
在第4步中,我说“如果你很幸运”。如果你特别不走运,问题可能出在固定装置上。如果灯具共享某种状态,尤其是在使用文件系统时,就会发生这种情况。在这种情况下,您必须尝试不同的测试分区,直到问题出现。
这是一个相当繁琐的过程,可能需要一段时间。有时更容易通过所有测试寻找依赖的机会并删除它们。理想情况下,没有测试代码应该设置对象的状态或外部。任何事情都是可疑的。
答案 1 :(得分:0)
如果在文件中定义了测试用例prerequiste,则很容易识别。否则,您需要使用反复试验方法来识别此信息。之后,您可以使用“测试初始化”和“测试清理”来组织测试。