我根据此代码的条件进行了单元测试,但它显示我没有对这些条件之一进行单元测试

时间:2015-06-30 16:10:24

标签: junit

我按照这条线进行了单元测试: if(sortBy.compareToIgnoreCase(PROPERTY_VALUE)== 0) 但是,它在我的代码中通过单元测试显示为unCoverage,并且在此行中我有这个通知:1分支错过了。我能做些什么呢?

// Sort the list
        if (StringUtils.isNotBlank(sortBy)
                && !(DEFAULT_SORT_FIELD.equals(sortBy))) {
            if (sortBy.compareToIgnoreCase(PROPERTY_NAME) == 0) {
                Collections.sort(configurationProperties,
                        ConfigurationPropertyComparator.NAME);
            } else {
                if (sortBy.compareToIgnoreCase(PROPERTY_VALUE) == 0) {
                    Collections.sort(configurationProperties,
                            ConfigurationPropertyComparator.VALUE);
                }
            }
        } else {
            Collections.sort(configurationProperties,
                    ConfigurationPropertyComparator.ID);
        }

1 个答案:

答案 0 :(得分:1)

if (sortBy.compareToIgnoreCase(PROPERTY_VALUE) == 0) {

这需要两个测试。一个条件是true,一个条件是false。大概你只测试true条件,因为这是你使用的唯一条件。

但是,编译后的代码块包含if else的分支,即使您从未使用过else。为了达到100%的测试覆盖率,您必须包含一个到达(空)else的逻辑路径。