我试图了解我在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也理解,该类是测试类,因此所有依赖项实际上都可用,我需要更改什么?
最好,没有
答案 0 :(得分:3)
该问题似乎与Eclipse认为您的源代码树开始的位置有关。您已经将代码放在src/main/java/hello
和src/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
也作为源文件夹。