java - 如何断言表达式不编译

标签 java junit

我编写了一个框架,增加了对其接口(interface)进行类型安全调用的可能性。现在,在编写 JUnit 测试时,我想表明编译器现在会检查先前导致运行时错误的特定表达式。

// this does not compile, because nameProp is of type Property<String>
Integer name = interface.getProperty(nameProp);

可能最好只是简单地注释掉该代码并让它保持原样。我只是想知道是否可以使用一些测试框架来编写类似

的东西
assertCompilationError() {
     Integer name = interface.getProperty(nameProp);
}

我明确地不想自己摆弄带有自定义类路径的 javac 调用。如果有可能将通用解决方案提取到框架代码(并捐赠给 JUnit 或 TestNG),那么这样的解决方案也将受到欢迎。

最佳答案

在 JUnit 编译之前您不能运行它,这对于此检查来说已经太晚了。

您不能使用库来允许未编译的代码进行编译,以便您可以检查它是否未编译。

关于java - 如何断言表达式不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14235690/

相关文章:

java - 在 Spring Boot 中使用 Hibernate 配置 DAO 层的单元测试

java - 必须为 Android 上的蓝牙连接选择哪个 UUID

java - JSON 转换对象与单独记录中的数组同名

java - Java 如何处理被零除?

java - AssertEquals 与带有非原始模板参数的集合

android - 单元测试Android,从资源中获取字符串

unit-testing - 在一个庞大而古老(5 年)的代码库中进行单元测试是否值得?

intellij-idea - "No tests were found"使用 Junit 5 和 IntelliJ

java - 如何根据组合框的更改事件更改另一个文本框的值

java - 我们如何使用appium获取 native View 中元素的字体大小