簡體   English   中英

如何在Maven和Eclipse中正確使用范圍“測試”和junit

[英]How to use scope “test” and junit correctly with maven and eclipse

我試圖了解我在Eclipse中使用Maven進行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也理解的一點,即該類是測試類,因此所有依賴項實際上都可用嗎?

最佳尼爾斯

這個問題似乎與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並在src - main下的樹中選擇java來執行此操作。 src/main/test做同樣的事情。 通常,maven項目也將src/main/resources作為源文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM