簡體   English   中英

在所有測試類中的所有測試終止后運行 junit 5 中的代碼

[英]Run code in junit 5 after all tests in all test classes terminated

對於測試證據,我想將我寫入特定目錄的所有測試工件(例如服務器調用和響應)存檔。 我得到了 zip 目錄的方法,但是我找不到合適的地方來執行它。

測試生命周期回調似乎不是正確的位置,因為在每個測試 class 之后調用 @AfterAll,但是應該在所有測試類中的所有測試終止后生成存檔。

在閱讀了如何在模塊中執行所有 junit5 測試之前和之后如何編碼等帖子之后? 從 junit 內部執行調用的希望似乎不大。

我找到了一個擴展 TestLauncher,但是在閱讀了稀缺的文檔之后,這似乎被用來從外部開始測試。 特別是在閱讀https://www.codota.com/web/assistant/code/rs/5c7c89fd2f7dae0001637b13#L33之后,SummaryGeneratingListener 聽起來對擴展很有用,但是如果我將此代碼放在 mavens src/test 下的樹中,我看不到如何只有這個啟動器會被調用,而不是所有的單個測試......

由於代碼最終將在 maven 構建中運行,其中歸檔非常重要,我認為也許有可能在目標測試后運行它。 但是我知道如果測試目標中至少有一定數量的錯誤,maven就會停止,然后下面的代碼將不會被執行。 但這是證據最有用的錯誤情況。

有人嘗試過類似的東西嗎?

感謝分享想法、想法和經驗

一般來說,這個問題有幾種解決方案。

  • 您可以在所有測試繼承的父 class 上定義 beforeAll/afterAll。 另一種選擇是嘗試在接口上定義 beforeAll/afterAll(我不能 100% 確定這是否有效;我會說它應該)。 在 beforeAll 中,您可以初始化設置,在 afterEachCallBack 中,您可以收集單個測試所需的所有數據。 所以每次測試后都會調用它。

  • 您可以實現一個擴展,它使用 JUnit 的回調,它們是可以處理的BeforeAllCallbackAfterAllCallBack 根據您的確切需要,您可能還需要實現 beforeEachCallBack/afterEachCallBack。

  • 另一種選擇是使用Test Execution 偵聽器,您可以在其中使用testPlanExecutionStartedtestPlanExecutionFinished ,您應該實施它們來記錄和獲取所需的一切。

我制作了一個示例項目,展示了 JUnit Jupiter 監聽器的用法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM