如何使用Null值获得更好的分支覆盖率

时间:2016-05-31 15:24:14

标签: java junit cobertura

我正在为使用JUnit的方法编写一个测试用例,我试图覆盖null条件以获得更好的分支覆盖率。问题是如果我将null作为参数传递给测试用例抛出NullPointerException这很明显,那么我将如何覆盖Null条件的分支覆盖范围。 pathString参数,我想在if( path != null && path.length() > 0 )中介绍它。我还没有编写完整的测试用例,但我很困惑如何为null条件编写一个。

待测方法

public String translateWebContextPathToVersionNo( String path ) {
    path = path.replaceAll( Constants.CONTEXT_PATH_ROS_PRODUCER_PROCESSOR, "" );
    path = path.replaceAll( Constants.CONTEXT_PATH_ROS_CONSUMER_PROCESSOR, "" );

    if( path != null && path.length() > 0 ) {
        String endChar = path.substring( path.length() - 1 );
        if( endChar.matches( pattern ) ) {
            path = path.substring(0, path.length() -1 );
        }
    }

    return path;
}

JUnit测试

@Test
public void testTranslateWebContextPathToVersionNo() throws Exception {
    TestQuartzROSServiceContextUtil util = new TestQuartzROSServiceContextUtil();
    util.translateWebContextPathToVersionNo(null);
}

提前致谢

1 个答案:

答案 0 :(得分:0)

 path = path.replaceAll( Constants.CONTEXT_PATH_ROS_PRODUCER_PROCESSOR, "" ) 
当path为null时,

将抛出NullPointerException。

为避免这种情况,您应该重构该方法并在对空对象调用方法之前检查null。