簡體   English   中英

Eclipse 中“未找到 JUnit 測試”

[英]'No JUnit tests found' in Eclipse

所以我是 JUnit 的新手,我們必須將它用於家庭作業。 我們的教授給了我們一個包含一個測試類BallTest.java 當我右鍵單擊 > 運行方式 > JUnit 測試時,出現一個彈出錯誤,提示“未找到 JUnit 測試”。 我知道這里已經回答了這個問題(未找到測試運行程序 'JUnit 4' 的測試),但是關閉 eclipse、重新啟動、清理和構建似乎不起作用。 下面是我的運行配置、構建路徑和我試圖測試的類的屏幕截圖。

運行配置構建路徑

BallTest.java

import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

public class BallTest {

Ball ball;

/**
 * @throws java.lang.Exception
 */
@Before
public void setUp() throws Exception {
    System.out.println("Setting up ...");
    Point2D p = new Point2D(0,0);
    ball = new Ball(p);
}

/**
 * @throws java.lang.Exception
 */
@After
public void tearDown() throws Exception {
    System.out.println("Tearing down ...");
    ball = null;
}

/**
 * Test method for {@link Ball#getCoordinates()}.
 */
@Test
public void testGetCoordinates() {
    assertNotNull(ball); // don't need Assert. because of the import statement above.
    Assert.assertEquals(ball.getCoordinates().getX(), 0);
    Assert.assertEquals(ball.getCoordinates().getY(), 0);
}

/**
 * Test method for {@link Ball#setCoordinates(Point2D)}.
 */
@Test
public void testSetCoordinates() {
    Assert.assertNotNull(ball);
    Point2D p = new Point2D(99,99);
    ball.setCoordinates(p);
    Assert.assertEquals(ball.getCoordinates().getX(), 99);
    Assert.assertEquals(ball.getCoordinates().getY(), 99);
}

/**
 * Test method for {@link Ball#Ball(Point2D)}.
 */
@Test
public void testBall() {
    Point2D p = new Point2D(49,30);
    ball = new Ball(p);
    Assert.assertNotNull(ball);
    Assert.assertEquals(ball.getCoordinates().getX(), 49);
    Assert.assertEquals(ball.getCoordinates().getY(), 30);

    //fail("Not yet implemented");
}

public static void main (String[] args) {
         Result result = JUnitCore.runClasses(BallTest.class);
         for (Failure failure : result.getFailures()) { 
                System.out.println(failure.toString()); 
            } 
        System.out.println(result.wasSuccessful());  
}

}

右鍵單擊“項目”>“屬性”>“Java 構建路徑”>“將測試文件夾添加為源文件夾”。

包括測試類在內的所有源文件夾都需要在 Eclipse Java 構建路徑中。 這樣可以將 main 和 test 類等源代碼編譯到 build 目錄中(Eclipse 默認文件夾為 bin)。

如果其他答案都不適合您,那么這對我有用。

重啟日食

對於一個項目,我已正確配置了源文件夾,並且正確注釋了單元測試,但仍然得到“未找到 JUnit 測試”。 重新啟動后它工作了。 我使用的是基於 eclipse Luna 4.4.1 的 STS 3.6.2

右鍵單擊-> 構建路徑-> 從構建路徑中刪除,然后再次添加它-> 右鍵單擊​​名為“測試”的文件夾> 構建路徑> 用作源文件夾。

我遇到了同樣的問題並解決了這樣的問題:我刪除了@Test 注釋並重新輸入了它。 它只是有效,我不知道為什么。

看起來您在測試類中缺少運行器定義,這可能是原因:

import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class BallTest {
...
}
  1. 右鍵單擊您的項目 -> 屬性 -> Java 構建路徑並轉到源選項卡,然后添加您的測試 src 文件夾。
  2. 選擇“項目”菜單並取消選擇“自動構建”選項(如果選中)
  3. 選擇清理,然后選擇“自動構建”選項
  4. 重新啟動 Eclipse 並運行您的 junit。

junit4要求測試類名應該使用Test作為后綴。

在我更改測試方法的名稱之前,任何解決方案都對我不起作用。 當測試方法的名稱以“test”開頭時就可以了。 我是 android 編程的新手,這讓我大吃一驚。

我認為您已經在 src 文件夾之外創建了測試類。 您可以通過兩種方式解決上述問題:

  1. java build path->source添加你的包名

  2. src文件夾中移動你的package/class

我有同樣的問題並以這種方式解決了兩種解決方案都可以正常工作。

試試這個

右鍵單擊單元測試類,

  1. 選擇“運行方式”-> 運行配置
  2. 在“測試”選項卡中,確保在“測試運行器”字段中選擇下拉“JUnit 4”
  3. 點擊“申請”

現在運行測試!

我通過配置構建路徑解決了這個問題。 右鍵單擊項目(或任何子文件夾)-> 構建路徑-> 配置構建路徑。 屬性窗口打開后,單擊“源”選項卡並添加 src 和 tst 文件夾。 但僅此一項對我不起作用。 奇怪的是,我不得不重新輸入注釋。(不過,Project->clean 或 restart 也可能有效)。

在跨 Eclipse 版本升級項目時遇到了這個問題。 例如,在Mars2.0 中運行良好的junit 並沒有在Neon 上運行。 以下對我有用。

  1. 刪除 .settings 文件夾。 將項目導入eclipse。
  2. 刪除源文件夾。 然后再次使用這些文件夾作為源文件夾。 例如 - 從構建路徑中刪除 src/main/java 作為源文件夾。 -> 好的 -> 再次將此文件夾設為源文件夾。 對 main/resources、test/java、test/resources 重復它

在 Eclipse Photon 中,您可能需要將 JUnit 4 或 5 添加到構建路徑中。 右鍵單擊@Test 並選擇“添加 JUnit 4 以構建路徑”。

測試類的運行配置可以為這個問題創建另一個原因(和解決方案)。

如果您轉到運行(或調試)配置(使用 cmd-3 或單擊工具欄中的小下拉按鈕),您可以看到為您使用的每個測試類創建的配置。 我發現我的一個不會啟動的類有一個運行配置,其中測試方法字段以某種方式被無意中填充。 我必須清除它才能使其正常工作。 清除后,它會以淺色文本顯示(所有方法)

我會奇怪地補充一點——也許還有其他事情發生——它似乎也對我不起作用,直到我修復了“名稱”字段,以便它像其他 JUnit 運行配置一樣只包含類名。

我正在使用@RunWith(Parameterized.class)但沒有在公共靜態參數方法中添加@Parameters注釋。 添加注釋后,它起作用了。

解決此問題的最佳方法是為您的 Junit 測試用例類名稱添加公共訪問修飾符,然后通過右鍵單擊您的 Junit 測試用例類並作為 Junit 測試運行來運行該場景。

解決方案是,在備份 src/test 文件夾后,將其從文件系統中刪除,然后再次創建。

那是在我執行“從構建路徑中刪除”提示之后,它在 STS 4 中打開項目時搞砸了文件夾。

JUnit 5.4.2 也有這個問題。 我使用 Eclipse 2019-09 和 gradle 5.3.1。

所以我必須將這兩個依賴項添加到 build.gradle 文件中,並為其配置正確的配置(testImplementation 和 testRuntimeOnly):

apply plugin: "java"

//enabled the Gradle’s native JUnit 5 support  
test {  
  useJUnitPlatform()  
}  
testImplementation  group: "org.junit.jupiter", name: "junit-jupiter-api", version: "${junitVer}"
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "${junitVer}"

有一段時間,如果有很多測試文件,那么由於類路徑參數長度限制,Eclipse 無法為所有庫和路徑傳遞 -classpath 選項。 解決它去運行

Configerations -> JUnit -> Your Project Config -> ClassPath -> Check "Use Temporary Jar Options"

至少它解決了我的問題。

右鍵單擊項目>屬性>Java構建路徑>庫>選擇類路徑->添加庫->Junit->選擇junit版本->完成->應用

有時,在模塊路徑中添加 Junit 庫時會發生這種情況。 因此,將其刪除並添加到類路徑中。

單擊“運行”-> 選擇您的 JUnit-> 在“測試運行器”中選擇要運行的 JUnit 版本。

在此處輸入圖片說明

在新的 eclipse 工作區中導入項目,這解決了我的問題。

暫無
暫無

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

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