我编写了一个框架,增加了对其接口(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/