java - 枚举 toString 上的 ClassCastException

标签 java junit

<分区>

谁能解释为什么下面的 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: expected:<[Invalid number of requests]> but was:<[actual value]>

正如预期的那样。

关于java - 枚举 toString 上的 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21342981/

相关文章:

java - 获得速度后需要帮助设置条件

java - 迁移到 Spring Boot 2.4.0 后不再使用故障安全插件执行 IT

java - 使用正则表达式验证可变长度字符串

java - Serenity BDD 入门

unit-testing - 如何模拟最终领域? mockito/powermock

java - 使用 Java Web App 在浏览器中打开文件

java - Perl 兼容正则表达式引擎 : how implemented?

testing - 具有内存消耗约束的 Java 单元测试

java - "The method x is ambiguous for the type"Mokito JUnit 错误

gradle - 将JUnit4.12 + Gradle4.9运行到NoSuchFileException中的嵌入式Cassandra单元测试