如何在Maven和Eclipse中正确使用范围“测试”和JUnit

时间:2018-08-13 09:25:15

标签: java eclipse maven junit

我试图了解我在Maven中使用Eclipse进行junit-tests所做的错误。主要是我一直在遵循Maven的“入门指南”: https://spring.io/guides/gs/maven/

但是对我来说,在junit方面并不能完全正常工作。

要遵循示例中的确切文件夹结构,我在eclipse中的src下命名了我的包: main.java.hello test.java.hello

我的测试类GreeterTest.java位于包test.java.hello中,并且具有以下内容:

package test.java.hello;

import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.*;

import org.junit.Test;

import main.java.hello.Greeter;

public class GreeterTest {

    private Greeter greeter = new Greeter();

    @Test
    public void greeterSaysHello() {
        assertThat(greeter.sayHello(), containsString("Hello"));
    }

}

在我的pom.xml中,您可以找到依赖项:

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>

不幸的是,eclipse说“导入的org.junit无法解决”。 如果将依赖项的范围从测试更改为编译,我不会收到此错误消息,但这不是打算使用范围的方式,是吗?

eclipse也理解,该类是测试类,因此所有依赖项实际上都可用,我需要更改什么?

最好,没有

1 个答案:

答案 0 :(得分:3)

该问题似乎与Eclipse认为您的源代码树开始的位置有关。您已经将代码放在src/main/java/hellosrc/main/test/hello中,但是Eclipse认为源代码树从src开始。因此,它认为其他文件夹是程序包,并为您的类指定了程序包名称,例如main.java.hello.Greeter

解决此问题的最快方法是在命令行上运行:

mvn eclipse:eclipse

使用maven修复Eclipse项目。它将自动将源根设置为正确的值。完成后,右键单击该项目,然后选择Refresh以查看更新的项目。

要手动解决此问题,您可以右键单击该项目,然后选择Build Path > Configure Build Path,然后在右侧的Source标签中,确保整个src/main/java(直到{ {1}}!)包含在源文件夹中。通过单击java并在Add Folder下的树中选择java来执行此操作。对src - main执行相同的操作。通常,maven项目也将src/main/test也作为源文件夹。