eclipse 中 ECLEmma 代码覆盖工具的奇怪行为

Strange behavior of ECLEmma Code Coverage Tool in eclipse

代码覆盖工具 ECLEmma 有一个奇怪的问题:

为了classMyFirstLogger我写了测试classMyFirstLoggerTest:

请注意,我在 MyFirstLoggerTest 中写了一个测试方法,我希望在其中获得 NullPointerException,只是为了通过 setLogger-方法中的 else if-case在 MyFirstLogger 中,其中 logger 为 null 并抛出 NullPointerexception

但是为什么这个树枝还是黄色的而不是绿色的呢?这是一个错误吗?

这种行为很常见:

  • testNullableGetLogger 被读取是因为 Emma(但和大多数其他代码覆盖工具)将完成的行标记为成功。由于它抛出异常(NullPointerException),该行(和方法!)无法完成,因此是红色的。

  • else if (logger == null) 是黄色的,因为 emma 在代码中添加了一个隐含的 else case。在您的情况下,永远无法输入这种 else 情况,因为 if 情况涵盖了记录器上的所有状态。要获得绿色线,请将其替换为 else.