我想讓測試類知道它們當前是否在Suite
內執行。 我有一個測試套件,在所有測試之前啓動服務器,並在所有測試後使用ExternalResource
關閉服務器。完美的作品。 在編寫新測試時,我想運行一個測試(或者來自同一個測試類的所有測試)來啓動和停止服務器。所以我希望這些類能夠意識到它們當前是否在套件內部執行,並相應地啓動服務器啓動。 這似乎是不可能的。套件Description
永遠不會傳遞到@Rule
s或@ClassRule
看來。我也無法獲得目前運行當前測試的Runner
的參考信息。如何使JUnit測試知道它們當前是否在套件內運行
有沒有辦法做到這一點?
更新由於首次提出答案:
請注意,有可能測試套件之前和之後運行許多其他測試。因此我不能依靠JVM關閉。 我的主要需求是在編寫測試之後立即在IDE(eclipse)中運行單個測試,並且仍然啓動服務器並關閉服務器。儘管套件中的每個測試都不應該發生。
總的來說,我同意這種方法,除了繼承,通常的問題適用於此。你可以用'Rule'來完成,並避免完全繼承 – tddmonkey
@tddmonkey是否需要將此規則添加到每個類?在這兩種情況下,所有測試類都必須改變,但在我看來'擴展AbstractServerTest'比添加註釋更加簡單,這是其他領域的一個噪音。你也必須記住公開場地,否則將被忽略。繼承你不能犯這樣的錯誤。 –
可以工作,但不是在我的情況。有幾百個其他的JUnit測試可以在使用服務器的測試之前或之後運行。這意味着在完成最後一次測試後,JVM不一定會關閉。 – sorrymissjackson