2013-07-30 80 views
2

我有一些代碼,需要之前和我的測試類之後運行。無論中間運行多少個測試類,它都必須爲整個集合運行一次且僅運行一次。檢測是否JUnit測試類是在一套房運行或單獨

當我在一套房上運行,它被稱爲在開始和整個套件的結束,這是按預期工作,但是,我希望能夠運行一個測試類。在這種情況下,測試類需要檢測到它正在單獨運行並啓動前/後測試代碼。

這可能嗎?

+1

的[之前和在JUnit 4.x的套件執行鉤後](http://stackoverflow.com/questions/82949/before-and-after-suite-execution-hook-in-junit-4-可能重複x) – kan

回答

1

你總是可以通過具有代碼實現這個檢測,如果它已經運行,通過靜態字段或其他方法,並跳過重新運行。然後,在每個測試的@BeforeClass中無條件地調用它。

調用代碼現在變成了先決條件,每個測試的一部分,自定義代碼爲此承擔責任,只有當運行必要的。

你可能會考慮其他方法,以避免在首位的問題:要麼降低對環境的依賴關係進行了檢測,或使自然的代碼冪等。

2

我解決了這個問題是這樣的: 在我加入這個套件:

public static Boolean suiteRunning = false; 
    @ClassRule 
    public static ExternalResource triggerSuiteRunning = new ExternalResource() { 
     @Override 
     protected void before() throws Throwable { 
     suiteRunning = true; 
     } 
    }; 

現在,在測試中,與MySuite.suiteRunning,我知道套件運行與否。

+0

在你的測試中,你如何訪問suiteRunning變量?你需要明確聲明套件的名稱嗎? –

+1

是的,我做過了。我認爲測試總是屬於一個套件,並且我可以靜態地訪問它。 但最終我們決定使用TestNG。這對定義測試套件有更多的可配置性。 –

相關問題