在 Java/Junit 中,我需要使用一些对象来测试 null。有多种方法可以测试条件,但我一直在使用 assertTrue 进行大多数测试。当我在 assertTrue 中检查空值时,EclEmma 声明它只测试一个分支。
当我手动将语句解析为变量时(例如将结果设置为布尔值并将其传递给 assertTrue),代码覆盖在断言上被认为是完整的,但在变量初始化行上没有。
为什么会这样?这是否与 Java 显然添加的额外字节码有关,如http://sourceforge.net/apps/trac/eclemma/wiki/FilteringOptions所述?任何解决方案(除了使用其他断言语句)。
断言真:
assertTrue( myObject == null ); //1 of 2 branches
断言真:
boolean test = (myObject == null); //1 of 2 branches missing
assertTrue(test); // complete
断言空:
assertNull( myObject ) //complete;