为什么我的 Junit 测试在一次全部运行时会失败?

use*_*911 5 java junit

我有一堆 Junit 测试。当我通过右键单击每个类然后“运行为”->“Junit 测试”来单独运行它们时,它们都通过了。但是,如果我单击一个包或单击 src/test/java 同时运行所有程序,其中许多会失败,一些会通过。

这是正常的吗?

Sha*_*awn 8

根据我的经验,这表明测试没有正确地自我清理。例如,如果您有任何调用静态方法的测试,那么这些静态调用可能会以影响未来测试的方式更改静态对象的状态。对于静态成员,只有一个实例存在,因此当测试运行时它们都将使用同一个实例。因此,当单独运行时,它们可能工作得很好,因为它们使用处于原始状态的静态对象,但是当作为套件的一部分运行时,其他一些测试可能会与静态对象交互,从而导致代码以不同的方式运行后续测试。

因此,在这种情况下,您可以添加 @After 或 @AfterClass 方法,该方法将重置运行测试时可能已更改的任何内容。