因此,我在 JUnit5 的 TestExecutionListener 的檔案中遇到了這樣的宣告:“與 JUnit 4 相反,測驗引擎應該不僅報告代表測驗計劃中可執行葉子的識別符號的事件,還報告所有中間容器的事件。” 檔案鏈接-> https://junit.org/junit5/docs/5.0.3/api/org/junit/platform/launcher/TestExecutionListener.html
我的問題是:什么是中間容器?
uj5u.com熱心網友回復:
任何 JUnit 5 測驗引擎都可以確定測驗樹是如何構建的。ATestIdentifier描述了這棵樹中的一個節點,它是以下三種型別之一:
CONTAINERTESTCONTAINER_AND_TEST
可以執行測驗,而容器有子項,子項本身可以是三種型別中的任何一種。
讓我們看一個使用 JUnit Jupiter 的示例:
class MyTestContainer {
@Test void test1() { }
@Nested
class InnerTestContainer {
@Test void test2() { }
}
}
運行它會宣布以下事件 - 可能以稍微不同的順序:
- 開始執行:MyTestContainer
- 開始執行:MyTestContainer.test1
- 執行完成:MyTestContainer.test1
- 開始執行:MyTestContainer.InnerTestContainer
- 開始執行:MyTestContainer.InnerTestContainer.test2
- 執行完成:MyTestContainer.InnerTestContainer.test2
- 執行完成:MyTestContainer.InnerTestContainer
- 執行完成:MyTestContainer
請記住,完全取決于測驗引擎如何定義容器和可執行測驗。有些(ArchUnit)使用成員變數進行測驗,有些則通過自己的 DSL 構建層次結構。例如,黃瓜有自己的方式來分組和嵌套特征、規格等。
希望我能闡明測驗、容器和形成最終測驗計劃的樹背后的想法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/523256.html
