2014-01-24 22 views
2

任何人都可以解釋爲什麼下面的JUnit測試會因ClassCastException失敗:消息不能在下面的Assert語句中轉換爲java.lang.String?枚舉上的ClassCastException toString

public enum Message{ 
     NULL_REQUEST("Null Request"), 
     INVALID_NUMBER_OF_REQUESTS("Invalid number of requests"); 

     Message(String msg){ 
      this.msg = msg; 
     } 

     @Override 
     public String toString(){ 
      return msg; 
     } 
     private final String msg; 
    } 

然後測試類有:

@Test 
public void test(){ 
    String x = Message.INVALID_NUMBER_OF_REQUESTS.toString(); 
    Assert.assertEquals(x, "actual value"); 
} 
+0

正確,我更新了語法。 – bwsmith

回答

0

cxfquest,

你的代碼(有)一些錯誤,請更正。

下面的代碼對我的作品:

public class MyTestUnit { 

    public enum Message{ 
     NULL_REQUEST("Null Request"), 
     INVALID_NUMBER_OF_REQUESTS("Invalid number of requests"); 

     Message(String msg){ 
      this.msg = msg; 
     } 

     private final String msg; 

     public String getMsg() { 
      return msg; 
     } 

     @Override 
     public String toString() { 
      return msg; 
     } 


    } 

    @Test 
    public void test(){ 
     String x = Message.INVALID_NUMBER_OF_REQUESTS.toString(); 
     Assert.assertEquals(x, "actual value"); 
    } 

} 

我想你是不是編譯和您運行的是舊版本(也許)。

結果是:

org.junit.ComparisonFailure:期望值<> 但[請求的無效數]:< [實際值]>

如預期。

+0

是的,而不是「實際價值」有業務邏輯,我假設返回一個字符串,而是一個消息對象。感謝您的理智檢查 – bwsmith

+0

根本不是..... – venergiac