2014-03-04 47 views
2

我在java 7中編寫一個switch語句,它根據字符串而變化。代碼和測試本身並不重要,但由於某種原因,Cobertura(和Eclemma)都表示我錯過了交換機內的分支。Java 7 cobertura代碼分支覆蓋字符串開關語句

下面的代碼表明我已經錯過了3 10的分支:

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%分支機構覆蓋率?

+0

關於EclEmma你可以看看這個答案:http://stackoverflow.com/a/28015212/584532 – nrainer

回答