JUnit文件未找到。

3

我已经将JUnit jar文件添加到我的类路径中,使用命令窗口可以找到并运行测试,但是当我尝试编译一个已知可用的测试时,似乎无法找到任何与JUnit相关的内容。每个测试类都会出现以下错误。在另一台计算机上进行了测试,可以正常工作,但在我的计算机上不行。有任何想法吗?

EstateAgentTest.java:25: incompatible types
found   : Test
required: java.lang.annotation.Annotation
    @Test public void rentable1() {

非常感谢。
5个回答

11

今天我遇到了这个问题...

事实证明,我的类名叫做 "Test.java" 是一个坏主意 - 它与测试方法上面的 @Test 行发生冲突。要修复:

  1. 我将类重命名为 SomethingElseTest.java,这基本上解决了问题。
  2. 请注意,我的 IDE 实际上已经将我的方法上方的 "@Test" 行更改为新的类名,但是一旦我将其更改回 @Test,一切都恢复正常。

6

对于这篇帖子的作者来说,可能有点晚了,但是对于其他遇到同样问题的人来说,我也遇到了完全相同的问题,并通过明确添加 import org.junit.Test; 来解决它,所以我的导入现在看起来像这样:

import org.junit.*;
import org.junit.Test;
import static org.junit.Assert.*;

我不知道为什么仅使用 import org.junit.*; 就无法正常工作。


我的问题是使用了 import junit.framework.Test; 而不是 import org.junit.Test;,替换后完美解决。 - giannis christofakis

1

似乎无法运行的机器使用的是旧版Java,没有注释功能。

您可以通过在命令行中输入java -version轻松进行测试。它可能是1.4或更早的版本,而您至少需要1.5才能使用注释。


你确定吗?它似乎可以运行已经编译好的测试。就像是之前编译过的完全相同的文件的版本。 - El High Groundito
@Matt:所以,你可以运行已编译的文件,但不能编译新文件?好的,使用JUnit进行注释处理的文件可能会生成向后兼容的字节码。唯一确定的方法是查看Java版本并尝试。 - Goran Jovic
Java版本号为"1.6.0_20",Java(TM) SE运行时环境版本为"1.6.0_20-b02",Java HotSpot(TM) 64位服务器虚拟机版本为"16.3-b01",支持混合模式。 - El High Groundito
@Matt:好的,我已经没有任何想法了。:( - Goran Jovic
请检查您的 "javac" 版本。 - Jayan

0

我不知道这是否会有所不同,但我习惯在测试方法声明之前看到@Test注释,就像这样:

@Test
public void testSomething()
{
   // 
}

我的第二个猜测是,Test 的另一个类文件以某种方式被导入,但它不是 JUnit 注释。


可能不会 - 制表符、空格和换行符都是空白字符。但是,值得一试。 - Goran Jovic

0

看起来你的代码中有一个名为Test的类并且已经被引入。尝试使用下面这行代码以确保你正在使用jUnit的Test注解:

@org.junit.Test 
void testSomething(){

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接