测试java代码是否编译

时间:2014-07-12 14:00:44

标签: java automated-tests static-typing

这可能听起来有点奇怪,但我正在寻找一种可能性来测试代码中的某些语句是否被强类检测器拒绝(这意味着代码应 NOT < / strong>编译)。

要解释我的意图:我正在对类型系统进行受控实验,我的主题必须在java中为我编写一些方法。主题编写的方法的功能可以使用单元测试轻松测试,但我也希望方法是良好类型的(这意味着某些方法调用应该)。

我可以想象实现的一种方法是编写应该将构建分解为单独文件的语句,将其添加到类路径并运行javac以查看构建期间是否发生任何错误。虽然这可能有用,但感觉不太复杂,所以我的问题是:是否有更好的方法(自动)测试某些语句是否被类型检测器反复?

2 个答案:

答案 0 :(得分:5)

这是Halting Problem的变体,在一般情况下无法解决。为此,您必须运行(或在本例中编译)代码。因此,您已经提出的解决方案是最佳解决方案。

答案 1 :(得分:4)

你看过the Checker Framework了吗?它可用于静态代码分析等。它可能非常适合你正在做的事情。以下是注释类型处理器示例的link

另外,您可能会发现the Java Compiler API非常有帮助。它允许在一台Java机器上以编程方式执行javac。因此,您可以将其用作测试的一部分。