From cd58c2c69a91b8d1a6374a2be0a148fbc2691d24 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Fri, 31 Jul 2020 12:34:47 +0200 Subject: [PATCH] Fixde calling before / after methods too often --- .../stubrunner/junit/StubRunnerExtension.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerExtension.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerExtension.java index 2b3ef4277b..1c7e2044e6 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerExtension.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerExtension.java @@ -22,6 +22,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -61,6 +62,10 @@ public class StubRunnerExtension implements BeforeAllCallback, AfterAllCallback, StubRunnerExtension delegate = this; + private AtomicBoolean beforeAllCalled = new AtomicBoolean(); + + private AtomicBoolean afterAllCalled = new AtomicBoolean(); + private BatchStubRunner stubFinder; private StubRunnerOptionsBuilder stubRunnerOptionsBuilder = new StubRunnerOptionsBuilder( @@ -77,21 +82,35 @@ public class StubRunnerExtension implements BeforeAllCallback, AfterAllCallback, @Override public void afterAll(ExtensionContext extensionContext) { - after(); + try { + after(); + } finally { + this.afterAllCalled.set(true); + } } @Override public void afterEach(ExtensionContext context) throws Exception { + if (this.afterAllCalled.get()) { + return; + } after(); } @Override public void beforeAll(ExtensionContext extensionContext) { - before(); + try { + before(); + } finally { + this.beforeAllCalled.set(true); + } } @Override public void beforeEach(ExtensionContext context) throws Exception { + if (this.beforeAllCalled.get()) { + return; + } before(); }