java - 如何在 maven 和 eclipse 中正确使用范围 "test"和 junit

标签 java eclipse maven junit

我试图了解我在使用 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/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 (直到 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/

相关文章:

java - 具有 DB2 表锁定的事务性 Web 应用程序

c++ - 对 `vtable for MainWindow' 的 undefined reference

java - 从函数 Android 更新 Textview

eclipse - Apache tomcat 7 本地主机页面没有错误,但是运行项目 : show HTTP Status 404 时

java - 使用外部 Maven 的 Teamcity

maven - Thorntail没有运行以进行集成测试,但是我有一个正在运行的项目相同的pom.xml

maven-2 - 如何在一个子模块中覆盖 maven-release-plugin 配置

java - Jenkins 和 JaCoCo 与 sbt

java - 无法使用 Java 创建正确的 JSON

java - 并行处理量简单队列服务(SQS)