2017-04-07 86 views
5

@BeforeAll註釋標記了在的所有測試之前運行的方法。在JUnit 5中,如何在所有測試之前運行代碼

http://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations

但是,有沒有辦法運行所有測試之前的一些代碼,在所有類?

我希望確保測試使用一組特定的數據庫連接,以及運行任何測試這些連接的全球一次性設置必須發生之前。

+0

這個方法是什麼? – davidxxx

+0

只是爲了記錄:如果您發現其中一個答案足夠有用 - 請考慮在某些時候接受其中的一個答案;-) – GhostCat

回答

2

我不知道有這樣做的意思。

我只是簡單地確保@BeforeAll的所有代碼調用某個單例來使這個init工作(可能以一種懶惰的方式來避免重複)。

可能不太方便...我看到的唯一的其他選項:我假設您的測試在特定的JVM作業中運行。你可能會掛接到一個JVM運行,這是否爲你工作的初始工作agentagent

除此之外:這兩個建議聽起來有點像對我的黑客。 real回答我的眼睛:退後一步,仔細檢查你的環境對它的依賴關係。然後找到一種方式來準備你的環境,以一種方式,你的測試出現,「正確的事情」自動發生。換句話說:考慮考慮購買你這個問題的架構。

1

您可以將每個使用數據庫的測試類標記爲定義了staticBeforeAll(以便它不能被覆蓋)的接口。例如: -

interface UsesDatabase { 
    @BeforeAll 
    static void initializeDatabaseConnections() { 
     // initialize database connections 
    } 
} 

這個方法將每個實現類調用一次,所以你需要定義一個方法來初始化您的連接只有一次,然後什麼也不做的其他呼叫。

相關問題