簡體   English   中英

為什么我不能從Package Explorer運行所有Java JUnit測試? - Scala插件問題

[英]Why can't I run all Java JUnit Tests from Package Explorer? - Scala Plugin Issue

編輯3

我安裝了新版本的eclipse(Mars - 4.5.0),一切正常。 但是,當我通過Eclipse Marketplace重新安裝Scala時,問題再次出現。 那么也許它是scala插件的東西?


編輯2

我正在玩它更多,發現如果我刪除某些包,功能返回。 具體來說,如果我刪除包functional and io ,則運行整個項目測試的能力將返回。 重命名包沒有幫助,只刪除它們。 此外,如果我在這些包中添加JUnit測試,我仍然無法通過運行整個包通過包瀏覽器運行該測試。


我在Eclipse中遇到了一個特定Java項目的問題。 當我嘗試從項目瀏覽器運行所有JUnit測試時(通過[right click on project folder] --> run as --> JUnit Test ),我收到許多人似乎看到的錯誤消息:

問題啟動JUnit測試:測試運行'JUnit 4'沒有找到測試

單擊消息上的“確定”將顯示“運行配置”對話框。

奇怪的是,在整個項目范圍內,該項目似乎非常孤立。 我可以毫無困難地做到以下幾點:

  • 通過打開它並單擊頂部的綠色運行按鈕,在該項目中運行任何單個測試。
  • 通過右鍵單擊項目資源管理器中的類並選擇run作為JUnit Test,在該項目中運行任何單個測試
  • 通過相同的方法在此項目中的任何包中運行所有測試。
  • 通過相同的方法在任何其他項目中運行所有測試。

我已經嘗試過類似帖子中提到的標准內容,似乎沒什么用。 具體來說,我試過了:

  • 重啟eclipse
  • 重新啟動我的電腦
  • 清理和重建項目
  • 刪除項目並從git重新克隆,然后重新添加到eclipse
  • 將@RunWith注釋添加到我的測試用例中
  • 確保我的所有測試用例都以“test”開頭
  • 而是使用JUnit3
  • 刪除所有JUnit運行配置並重新創建此運行配置

另外,我清楚地記得這個功能在不久前用於這個項目,但是不記得確切的時間。 所以我必須添加/更改/刪除導致錯誤出現的內容。


編輯@ Durron597的建議:不幸的是,沒有任何建議有效。 我還嘗試刪除每個JUnit運行配置並再次嘗試創建配置過程,仍然沒有運氣。

我的eclipse版本是:Luna Service Release 2(4.4.2)

我的JUnit版本是:4.11

JUnit首選項截圖: JUnit首選項截圖


這是一個測試的代碼:

package common;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.HashSet;

import org.junit.Test;

public class UtilTest {

    @Test
    public void testWrappers(){
        short[] s = {1,2,3,4};
        Short[] s2 = Util.boxArr(s);
        short[] s3 = Util.unboxArr(s2);

        assertEquals(s.length, s2.length);
        assertEquals(s.length, s3.length);
        for(int i = 0; i < s.length; i++){
            assertEquals(s[i], s2[i].shortValue());
            assertEquals(s[i], s3[i]);
        }

        int[] i = {1,2,3,4, Integer.MAX_VALUE, Integer.MIN_VALUE};
        Integer[] i2 = Util.boxArr(i);
        int[] i3 = Util.unboxArr(i2);

        assertEquals(i.length, i2.length);
        assertEquals(i.length, i3.length);
        for(int x = 0; x < s.length; x++){
            assertEquals(i[x], i2[x].intValue());
            assertEquals(i[x], i3[x]);
        }

        long[] l = {1,2,3,4, Integer.MAX_VALUE, Integer.MIN_VALUE, Long.MAX_VALUE, Long.MIN_VALUE};
        Long[] l2 = Util.boxArr(l);
        long[] l3 = Util.unboxArr(l2);

        assertEquals(l.length, l2.length);
        assertEquals(l.length, l3.length);
        for(int x = 0; x < s.length; x++){
            assertEquals(l[x], l2[x].longValue());
            assertEquals(l[x], l3[x]);
        }

        float[] f = {1,2,3,4, 0.4f, 0.1f, Float.MAX_VALUE, Float.MIN_NORMAL};
        Float[] f2 = Util.boxArr(f);
        float[] f3 = Util.unboxArr(f2);

        assertEquals(f.length, f2.length);
        assertEquals(f.length, f3.length);
        for(int x = 0; x < s.length; x++){
            assertEquals(f[x], f2[x].floatValue(), 0.00001);
            assertEquals(f[x], f3[x], 0.00001);
        }


        double[] d = {1,2,3,4, 0.4, 0.1, Float.MAX_VALUE, Float.MIN_VALUE, Double.MAX_VALUE, Double.MIN_NORMAL};
        Double[] d2 = Util.boxArr(d);
        double[] d3 = Util.unboxArr(d2);

        assertEquals(d.length, d2.length);
        assertEquals(d.length, d3.length);
        for(int x = 0; x < s.length; x++){
            assertEquals(d[x], d2[x].doubleValue(), 0.00001);
            assertEquals(d[x], d3[x], 0.00001);
        }

        char[] c = {1,2,3,4, 'a', 'b', '.', Character.MAX_VALUE, Character.MIN_VALUE};
        Character[] c2 = Util.boxArr(c);
        char[] c3 = Util.unboxArr(c2);

        assertEquals(c.length, c2.length);
        assertEquals(c.length, c3.length);
        for(int x = 0; x < s.length; x++){
            assertEquals(c[x], c2[x].charValue());
            assertEquals(c[x], c3[x]);
        }
    }

    @Test
    public void testRandElement(){
        assertTrue(null==Util.randomElement(null));

        HashSet<Integer> s = new HashSet<>();
        assertTrue(null==Util.randomElement(s));

        for(int i = 0; i < 10; i++){
            s.add(i);
        }

        HashSet<Integer> s2 = new HashSet<>();
        while(! s2.equals(s)){
            Integer i = Util.randomElement(s);
            s2.add(i);
            assertTrue(s.contains(i));
        }
    }

    @Test
    public void testPermute(){
        ArrayList<Integer[]> a = Util.permute(new Integer[]{1,2,3,4});
        assertEquals(a.size(), 24);

        for(Integer[] i : a){
            assertEquals(i.length, 4);
            assertEquals(10, i[0] + i[1] + i[2] + i[3]);
        }

        HashSet<Integer[]> s = new HashSet<>(a);
        assertEquals(s.size(), 24);

        a = Util.permute(new Integer[]{});
        assertEquals(a.size(), 1);
    }

}

整個項目在https://github.com/Mshnik/UsefulThings,如果這也有幫助。

嘗試查看此主題中的建議。 這不是完全相同的錯誤,但它是相似的: 沒有測試運行'JUnit 4'的測試


我假設問題是你沒有“運行所有測試”的正確運行配置。 如果您最近清理了舊的和過時的運行配置,並且在沒有意識到的情況下刪除了相應的運行配置,那么這可能會破壞。 讓我們按照以下步驟創建一個:

  1. 轉到“運行配置”對話框。
  2. 選擇左側的JUnit
  3. 單擊帶有星號的頁面,工具提示文本為“新啟動配置”
  4. 給它起個名字。 (我使用AllTests
  5. 單擊Run all tests in the selected project, package or source folder:Run all tests in the selected project, package or source folder:單選按鈕
  6. 使用搜索對話框指向您的項目
  7. 確保Test runner設置為JUnit 4

單擊Apply,然后單擊Run。 這應該恢復破碎的方法。

如果這些步驟不起作用,請嘗試以下方法(按順序嘗試每個步驟,如果沒有修復則轉到下一步) - 這個想法可能是您確實有配置,但它已損壞。

  1. 確保您使用該頁面底部的Eclipse JUnit啟動程序
  2. 檢查選中“運行所有測試”單選按鈕的所有其他運行配置並刪除它們。
  3. 重啟Eclipse
    • 最后這樣做是因為我懷疑它會做什么, 除非你已經完成了先前的步驟,正如你在問題中提到的那樣

現在應該修復它。 如果不是,請編輯您的問題以包含您的JUnit版本和您的Eclipse版本。

我更新到最新版的eclipse(Mars - 4.5.0),問題完全消失了。 所以也許這是eclipse等版本的錯誤。 我真的沒有回答為什么我有這個問題。

如果查看“問題”選項卡,您可能會看到一個條目,指出“scala測試不是由於依賴范圍主要的錯誤而構建的”或類似的東西。 這表明測試的類路徑中的某些構建問題阻止了測試的構建,即使您的測試不依賴於損壞的部分本身。 似乎Scala編譯器有點挑剔。

在任何情況下,修復構建問題和包的其他部分,您的測試可能會起作用。 對我來說,我有一個類似的問題,ScalaIDE提供的Scala Library容器不包含Jackson Module Scala,我不得不手動添加該庫。 一旦我這樣做,這就修復了構建並允許我再次運行測試。

暫無
暫無

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

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