我试图了解我在使用 Eclipse 的 Maven 中使用 junit-tests 做错了什么。主要是我一直在关注 Maven 的这个“入门指南”:
https://spring.io/guides/gs/maven/
但对我来说,当涉及到 junit 时,它并不完全像那样工作。
为了遵循示例中的确切文件夹结构,我在 Eclipse 的 src 下命名了我的包:
main.java.hello
测试.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 也理解,这个类是一个测试类,因此所有依赖项实际上都可用?
最好的,尼尔斯
最佳答案
该问题似乎与 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
(直到 java
!)作为源文件夹包含在内。单击 Add Folder
来执行此操作并选择 java
在树下src - main
.对 src/main/test
执行相同操作.通常maven项目包括src/main/resources
也作为源文件夹。
关于java - 如何在 maven 和 eclipse 中正确使用范围 "test"和 junit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51819143/