Avatar
Avatar
norio_nomura
@swift-6.2 + testing import Testing struct MyRecursiveSuiteTrait: SuiteTrait & TestTrait & TestScoping { var isRecursive: Bool { true } func provideScope( for test: Test, testCase: Test.Case?, performing function: () async throws -> Void ) async throws { print("enter test") defer { print("leave test") } try await function() } } extension Trait where Self == MyRecursiveSuiteTrait { static var mySuperSuite: Self { Self() } } // a. ここで Suite trait として1回呼ばれる @Suite(.mySuperSuite) struct MyTest { // b. ここで Suite trait として1回呼ばれる // c. ここで Test trait として1回呼ばれる @Test func foo() { print("foo") } // d. ここで Suite trait として1回呼ばれる // e. ここで Test trait として1回呼ばれる @Test func bar() { print("bar") } } (edited)
enter test enter test bar leave test foo leave test◇ Test run started. ↳ Testing Library Version: 6.2 (3fdabe5392108d8) ↳ Target Platform: aarch64-unknown-linux-gnu ◇ Suite MyTest started. ◇ Test foo() started. ◇ Test bar() started. ✔ Test bar() passed after 0.001 seconds. ✔ Test foo() passed after 0.001 seconds. ✔ Suite MyTest passed after 0.001 seconds. ✔ Test run with 2 tests in 1 suite passed after 0.001 seconds. (edited)