如何断言表达式不能编译

sor*_*ito 7 java junit

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

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

可能最好简单地将代码注释掉并保留原样.我只是想知道是否可以使用某些测试框架来编写类似的内容

assertCompilationError() {
     Integer name = interface.getProperty(nameProp);
}
Run Code Online (Sandbox Code Playgroud)

我明确地不想随意使用自定义类路径调用javac.如果有可能将一般解决方案提取到框架代码(并捐赠给JUnit或TestNG),那么这种解决方案也会受到欢迎.

sor*_*ito 0

一段时间后,我发现了以下一个软件:

http://docs.codehaus.org/display/JANINO/Home

看起来应该可以进行某种黑客攻击,以便仅编译有问题的块。无论如何,现在我的示例不起作用,因为它还不支持泛型。