任何人都可以解释为什么下面的JUnit测试会因ClassCastException而失败:消息无法在下面的Assert语句中强制转换为java.lang.String吗?
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 :(得分: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:expected:< [无效的请求数]> 但是:< [实际值]>
正如所料。