2010-03-22 274 views
4

我有兩個我正在測試的類(讓我們稱它們爲ClassA和ClassB)。每個都有自己的JUnit測試類(分別是testClassA和testClassB)。從另一個JUnit測試類運行JUnit測試類

ClassA的依賴ClassB的用於其正常運作,所以我想確保ClassB的運行testClassA(否則從testClassA結果就毫無意義了)之前通過了測試。

這樣做的最好方法是什麼?在這種情況下,它是一個賦值,因此如果可能的話,我需要將它保留給兩個指定的測試類。

如果testClassB的測試未全部通過,我可以從testClassA拋出一個異常嗎?這將要求testClassB以不可見的方式運行,只需將其成功/失敗報告給testClassA,而不是GUI(通過JUnit)。

我使用Eclipse和JUnit 4.8.1

更新:到目前爲止,我所管理的最好的是一個測試套件單獨的文件,如下圖所示。這仍然不是我所追求的,因爲如果ClassA未通過某些測試,它仍允許運行ClassB測試。

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

@RunWith(Suite.class) 
@Suite.SuiteClasses({testClassA.class, testClassBCode.class}) 
public class testClassB { 
} 

回答

9

你的單元測試不應該依賴於其他測試。您的問題

一個解決辦法是嘲笑ClassB的你ClassA的的測試,以獨立的ClassB的的測試結果的測試它的行爲。

我推薦你給mockito試試!

+0

在這種情況下,因爲它是一個任務,我不能依靠我的老師具有的Mockito - 本質上他們只是要我的Java包複製到自己的項目,在我的課運行測試,並在運行我的測試他們的課程。 (爲了將來的參考,顯然我想知道處理這些事情的最佳方式)。 雖然它可能不是理想的,但此刻我只是想找一種方式(如果有的話)說 '//不要運行這個測試,除非ClassB已經通過測試,而不必依賴於它的測試' 測試人員看到我的評論。 – 2010-03-22 04:03:25

+0

我不認爲你可以在JUnit中做到這一點。您可以使用OrderedSuite插件爲JUnit,TestNG或其他測試框架指定測試順序。 – mgv 2010-03-22 04:22:38

0

你應該嘗試testng框架,它允許這種依賴性測試。

+2

正如之前的評論:這是一個任務和JUnit測試是一個要求。 – 2010-03-22 04:31:19