Java 7 cobertura代码分支覆盖与字符串切换语句

时间:2014-03-04 20:43:48

标签: java unit-testing junit eclemma

我在java 7中编写一个基于字符串而变化的switch语句。代码和测试本身相当简单,但由于某种原因,Cobertura(和Eclemma)都表示我错过了转换中的分支。

以下代码表明我错过了10个分支中的3个:

public String decodeQuestionResponseType(final String questionResponseType){
    switch (questionResponseType) {
            case "multipleChoiceResponse":
                return "multipleChoice";

            case "textResponse":
                return "text";

            case "photoResponse":
                 return "photo";

            default:
                 return "none";
        }
}

@Test
public void testDecoder(){

    assertEquals("multipleChoice", decodeQuestionResponseType("multipleChoiceResponse"));
    assertEquals("text", decodeQuestionResponseType("textResponse"));
    assertEquals("photo", decodeQuestionResponseType("photoResponse"));
    assertEquals("none", decodeQuestionResponseType("otherResponse"));

}

我可以使用if / else语句编写,测试将通过。有什么我想念的吗?为什么我不能获得此代码的100%分支覆盖率?

1 个答案:

答案 0 :(得分:2)

发现这是Cobertura中的一个已知错误,应该在2.1.0版中修复。

https://github.com/cobertura/cobertura/issues/79