我有一些代碼,需要之前和我的測試類之後運行。無論中間運行多少個測試類,它都必須爲整個集合運行一次且僅運行一次。檢測是否JUnit測試類是在一套房運行或單獨
當我在一套房上運行,它被稱爲在開始和整個套件的結束,這是按預期工作,但是,我希望能夠運行一個測試類。在這種情況下,測試類需要檢測到它正在單獨運行並啓動前/後測試代碼。
這可能嗎?
我有一些代碼,需要之前和我的測試類之後運行。無論中間運行多少個測試類,它都必須爲整個集合運行一次且僅運行一次。檢測是否JUnit測試類是在一套房運行或單獨
當我在一套房上運行,它被稱爲在開始和整個套件的結束,這是按預期工作,但是,我希望能夠運行一個測試類。在這種情況下,測試類需要檢測到它正在單獨運行並啓動前/後測試代碼。
這可能嗎?
你總是可以通過具有代碼實現這個檢測,如果它已經運行,通過靜態字段或其他方法,並跳過重新運行。然後,在每個測試的@BeforeClass
中無條件地調用它。
調用代碼現在變成了先決條件,每個測試的一部分,自定義代碼爲此承擔責任,只有當運行必要的。
你可能會考慮其他方法,以避免在首位的問題:要麼降低對環境的依賴關係進行了檢測,或使自然的代碼冪等。
我解決了這個問題是這樣的: 在我加入這個套件:
public static Boolean suiteRunning = false;
@ClassRule
public static ExternalResource triggerSuiteRunning = new ExternalResource() {
@Override
protected void before() throws Throwable {
suiteRunning = true;
}
};
現在,在測試中,與MySuite.suiteRunning,我知道套件運行與否。
在你的測試中,你如何訪問suiteRunning變量?你需要明確聲明套件的名稱嗎? –
是的,我做過了。我認爲測試總是屬於一個套件,並且我可以靜態地訪問它。 但最終我們決定使用TestNG。這對定義測試套件有更多的可配置性。 –
的[之前和在JUnit 4.x的套件執行鉤後](http://stackoverflow.com/questions/82949/before-and-after-suite-execution-hook-in-junit-4-可能重複x) – kan