为什么测试运行器在这些JUnit测试的中间停止?

时间:2019-07-01 22:45:39

标签: java unit-testing junit

在一个Java项目上,一个模块中有670个JUnit测试。经过最近的重构,出现了奇怪的行为。

发生的事情是,尽管当我尝试运行模块中的所有测试时,所有670个测试都运行并通过了OK(JUnit测试运行器识别出正确数量的测试,并开始运行它们),但这只是在测试187之后停止

Stopped. Tests passed: 187 of 670 tests

我删除了所有测试,并一次又一次地将它们重新添加到组中,以查找有问题的测试。另外,我尝试了不同的测试组合,以查看特定测试是否使测试套件脱轨。奇怪的是,任何600种测试都会一直进行:

Tests passed: 600 of 600 tests

601测试,并且套件在测试205之后停止运行:

Stopped. Tests passed: 205 of 601 tests

然后,当我添加更多测试时,它停止回归的数字即为我们在三个屏幕截图中的第一幅中看到的670个数字中的187个。

这些测试中大约有150个是依赖于与资源的连接的集成测试,而其余大多数测试是单元测试。我怀疑这些资源连接是一个因素,它允许相同数量的测试通过失败,具体取决于集成测试的数量。

结果,我可以单击“重新运行失败的测试”,它的作用是“继续运行测试套件”。经过两步过程,我可以运行整个套件,全部为绿色。

为确认这是代码库中实际更改的结果,而不是缓存失效的结果,我甚至删除了所有与IDE相关的文件,将其签出并在包含所有新文件的新计算机上构建操作系统和工具。但是,现在只有重构分支始终表现出这种奇怪的行为。

0 个答案:

没有答案