assertNotEquals静态导入导致编译错误

Mat*_*ale 4 java eclipse ant junit

我有一个Foo.java编译没有错误的文件。但是当我添加单行时

import static org.junit.Assert.assertNotEquals;
Run Code Online (Sandbox Code Playgroud)

这会导致我的蚂蚁生成以下错误:

compileTests:
[javac] Compiling 27 source files to C:\example\bin
[javac] C:\example\src\Foo.java:7: error: cannot find symbol
[javac] import static org.junit.Assert.assertNotEquals;
[javac] ^
[javac]   symbol:   static assertNotEquals
[javac]   location: class
[javac] 1 error
Run Code Online (Sandbox Code Playgroud)

我正在使用JUnit 4.4。junit-4.4.jar包括在classpathjavac任务。

我曾尝试运行不同版本的编译器与标志-Dbuild.compiler=javac1.7-Dbuild.compiler=javac1.8,但它没有什么区别。我仍然收到完全相同的错误。

assertNotEquals 是从Assert唯一导致此错误的静态导入。

我已经看到过此文章Java静态导入导致编译错误。可能是编译器错误? 而且我尝试Assert自行导入,并在每个assert语句之前加上Assert.建议的这篇文章。我遇到了同样的错误,这次是在方法调用Assert.assertNotEquals()而不是import语句上。

但是,导入成功编译并在Eclipse上运行。

有人对此有任何想法吗?我想深入了解这一点,而不必实施变通办法。

dka*_*zel 6

您正在使用Junit 4.4。 AssertNotEquals直到4.11才被添加

JUnit 4.11发行说明

如果您更新到最新的JUnit jar。编译器错误应该消失。Eclipse可能正在使用具有最新方法的自己的内置版本。