测试java中的预期编译时错误

时间:2014-09-01 06:31:15

标签: java eclipse unit-testing generics ant

这个问题可以被认为只是这个c ++问题的Java版本:Unit test compile-time error

我正在编写一些与java中的泛型相混淆的实用程序类,并且事情变得非常奇怪,我发现自己希望我知道如何为可能导致编译器错误的代码编写单元测试。我知道如何在抛出预期的异常时才进行单元测试。不知道如何在我得到预期的错误时才通过它。这可能吗?如果是这样,怎么样?有一种典型的方法吗?有没有jUnit方式?

一个例子是以一种应该导致错误的方式使用一个方法(比方说,一个执行强制转换的方法)。我想要一个仅在调用该方法的代码产生错误时才会通过的测试。我会将其与其他不会导致错误的测试一起运行。

另一个例子是阅读Generic And Parameterized Types,并注意注释经常说“失败的ClassClassException”“应该失败,但是成功”。这些似乎是可以自动化的测试。

这不是为了测试编译器。这是测试我写的通用代码应该做的事情。

我的直觉告诉我,这超出了编译器或库可以做的范围,并进入IDE魔术,奇怪的项目配置或静态代码分析领域。我真的不知道。我只是想确保代码导致它应该出现的错误,因为它不会导致错误。我使用eclipse,ant和jUnit这样一个详细说明如何用它们完成的答案将是完美的。

1 个答案:

答案 0 :(得分:2)

您可以使用其他软件运行某些命令并检查其结果。然后很容易检查编译时错误。可以将它作为脚本以某种语言编写,也可以作为java中的单独项目编写,但它必须与您的项目不同。

您要运行的命令应该是javac,ant或任何其他命令,具体取决于您的IDE。