2009-01-05 43 views
47

是否可以在不手動創建測試套件的情況下同時運行多個包的JUnit測試。是否可以在Eclipse中運行多個包中的JUnit測試?

例如,如果我有層次結構:

code.branchone
code.branchone.aaa
code.branchone.bbb
code.branchtwo
code.branchtwo.aaa
code.branchtwo .bbb

是否有可能:

  1. 運行在code.branchone和後代包
  2. 運行中說code.branchone.aaa所有測試的所有測試和code.branchtwo.bbb

我用手動創建測試套件看到的問題是,當新測試過來,你可能會忘記添加它們。

+5

下面的答案都不起作用。我也有同樣的問題。我可以運行「code.branchone.aaa」中的所有測試,但是如果我轉到root「code.branchone」,它會顯示「沒有測試運行器'Junit 4'的測試結果」。請記住「code.branchone」沒有任何源代碼。 – Bdoserror 2012-01-05 01:06:46

+0

額外的混淆說明:我的項目(由其他人構建)已具有啓動配置,該配置從層次結構中的較高目錄(「代碼」)開始工作。我複製了該配置並將其修改爲我想要的子目錄,但它仍然不起作用,並且該目錄規範是它們之間的唯一區別。 – Bdoserror 2012-01-05 01:13:16

+0

嗯,也許問題是因爲那個工程從主項目下的「子項目」(?)目錄運行。例如在這個設置中,工作配置爲「src/it/java」運行:項目(樹的根)有1個子項,src/it/java 我想要的是src/it/java的子目錄,源視圖中我想運行的子目錄的共同父項沒有它自己的條目。例如: 項目(root)有src/it/java作爲子項,而srt/it/java有2個子項sub1.subA&sub1.subB,我想從src/it/java/sub1運行所有測試 – Bdoserror 2012-01-05 01:25:45

回答

1

我相信您可以將所有測試包添加到單個目錄中。如果你右鍵點擊這個目錄,你應該找到「run as - > JUnit test」選項。這將運行目錄中包含的所有測試,並會捕獲您添加的任何內容。任何新的測試都會與其他人一起放入其中,無論包含哪個名稱都無關緊要。希望幫助

1

當然,你想要的包單擊鼠標右鍵,並選擇Run As ... JUnit測試

+3

這隻適用於選擇一個包裝。 – SpaceTrucker 2015-07-08 08:39:49

1

在Eclipse中,您調試/運行,你有以下幾種選擇配置:

  1. 運行單個測試
  2. 運行在選定的項目,包或源文件夾

所有的測試,我認爲第二個選項是你在這種情況下的朋友。

+14

,但它不會讓你運行不同軟件包的測試。 – 2010-09-27 06:22:13

3

我相信你可以稍微調整一下。創建CLASSES_DIR屬性的集合並在findClasses方法中遍歷它。 (junit4)

http://burtbeckwith.com/blog/?p=52

+0

我還以不同於建議的方式使用它,使用註釋。這個鏈接真的很有用! – oshai 2011-01-27 19:37:55

18

的另一種方式:(在Eclipse,不是在這裏:))

點擊黑色三角形用紅色框下面的圖片中表示

enter image description here

然後打開運行配置,創建一個新配置,然後設置「運行所有測試...」,如下圖所示。

enter image description here

+4

只有在src(類路徑的根目錄)中才會運行項目的所有單元測試。如果在特定的軟件包上選擇它,它只會在選定的軟件包本身內運行測試,但不會運行子軟件包中的測試。 – Heri 2015-12-22 12:57:00

22

是的,這是可能的。對我而言,最簡單的方法是添加一個測試套件類。它可以是這樣的:

package tests; 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 
import org.junit.runners.Suite.SuiteClasses; 

import tests.message.ATest; 
import tests.validator.BTest; 
import tests.validator.CTest; 
import tests.validator.DTest; 

@RunWith(Suite.class) 
@SuiteClasses({ ATest.class, 
     BTest.class, 
     CTest.class, 
     DTest.class }) 
public class AllTests { 

} 

這將允許您測試您導入無論是在哪個包的任何類在Eclipse中運行這個你只需右鍵單擊AllTests中類並運行它作爲JUnit測試。然後它將運行您在@SuiteClasses中定義的所有測試。

這將與鏈接源一起工作,我一直都在使用它。

9

也許並不完全是原始問題,但只需右鍵單擊項目 - > Run As JUnitTest,即可輕鬆運行整個項目的所有測試。不要擔心註釋類所在的位置,這將被掃描。

如果應用於test-src文件夾或帶有子包的包,這不起作用。真是慚愧 - .-

相關問題