Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        5年前关闭。
                                                                                            
                
        
谁能解释为什么以下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" );
}

最佳答案

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:预期:
  但是是:


如预期的那样。

10-07 12:07
查看更多