当从Eclipse运行JUnit时(使用右键单击|以-在项目级别和单个测试级别运行相同的结果),我的测试运行两次。一次测试按预期运行(并仅用程序包名称标记),另一次出现虚假的空指针异常(并以完全合格的程序包名称标记)。我没有任何套件,并且运行结果不同,这意味着它与其他人两次运行测试似乎都不一样。
我的测试文件(减去导入)为:
public class CommandHistoryTest extends TestCase {
private CommandHistory commandHistory;
@BeforeEach
public void initEach() {
commandHistory = new CommandHistory();
}
@Test
@DisplayName("On creation, canUndo and canRedo should be false")
public void testCreate() {
Assertions.assertFalse(commandHistory.canUndo());
Assertions.assertFalse(commandHistory.canRedo());
}
}
就像我说的那样,这在JUnit传递中的一个上可以正常工作-直到我实现了相关的位commandHistory
并在实现它们时都传递了它-还是失败了-但在另一个传递中,它给了我一个空指针异常Assertions.assertFalse(commandHistory.canUndo());
我可以接受这一点,因为我得到了一组有效的测试结果,但是在第二遍中看到所有这些危险信号使我感到难过。如何停止虚假测试?
编辑:我注意到在包资源管理器中测试显示为'> CommandHistoryTest.java'。我添加了另一个测试类,该类在软件包浏览器中不显示“>”符号,并且不会运行两次。“>”是什么意思?
再次编辑:不,我现在看到'>'是git集成的一部分,但是答案在下面。
JUnit运行测试两次:一次使用Vintage引擎,因为它是TestCase
从JUnit 3扩展而来的;一次是使用Jupiter引擎,因为它包含了一个用注释的方法org.junit.jupiter.api.Test
。后者执行该@BeforeEach
方法时,前者不执行。只需删除extends TestCase
,它将仅运行一次。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句