You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by al...@apache.org on 2019/08/05 13:35:42 UTC
[camel] 09/09: CAMEL-13342: Implemented a first version of a
proof-of-concept for camel-test-spring/SprintBootTest with JUnit 5
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch CAMEL-13342-JUNIT5-EXPLORATORY
in repository https://gitbox.apache.org/repos/asf/camel.git
commit de6f06d87d0dbd1676a060b37e1b6843ce1e0b79
Author: aldettinger <al...@gmail.com>
AuthorDate: Wed Jul 24 16:35:27 2019 +0200
CAMEL-13342: Implemented a first version of a proof-of-concept for camel-test-spring/SprintBootTest with JUnit 5
---
.../spring/boot/mockendpoints/AdviceWithTest.java | 11 ++++----
.../MockEndpointsAndSkipDirtiesContextTest.java | 9 +++---
.../boot/mockendpoints/MockEndpointsTest.java | 9 +++---
.../camel/spring/boot/routefilter/BarTest.java | 7 ++---
.../routefilter/FooExcludeRouteAnnotationTest.java | 9 +++---
.../camel/spring/boot/routefilter/FooTest.java | 7 ++---
.../spring/CamelSpringBootExecutionListener.java | 10 +++++++
...utionListener.java => CamelSpringBootTest.java} | 32 ++++++++++------------
...ringTestContextLoaderTestExecutionListener.java | 9 ++----
.../spring/DisableJmxTestExecutionListener.java | 10 +++++++
.../spring/StopWatchTestExecutionListener.java | 10 +++++++
11 files changed, 71 insertions(+), 52 deletions(-)
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/AdviceWithTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/AdviceWithTest.java
index bea0229..c902c50 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/AdviceWithTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/AdviceWithTest.java
@@ -21,17 +21,16 @@ import org.apache.camel.builder.AdviceWithRouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.ModelCamelContext;
import org.apache.camel.reifier.RouteReifier;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.apache.camel.test.spring.UseAdviceWith;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.apache.camel.test.junit5.spring.UseAdviceWith;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertFalse;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@UseAdviceWith
@SpringBootApplication
@SpringBootTest(classes = AdviceWithTest.class)
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsAndSkipDirtiesContextTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsAndSkipDirtiesContextTest.java
index 6133451..c7ac277 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsAndSkipDirtiesContextTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsAndSkipDirtiesContextTest.java
@@ -22,17 +22,16 @@ import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.spring.SpringRouteBuilder;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.apache.camel.test.spring.MockEndpointsAndSkip;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.apache.camel.test.junit5.spring.MockEndpointsAndSkip;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.annotation.DirtiesContext;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@MockEndpointsAndSkip("direct:b")
@SpringBootApplication
@SpringBootTest(classes = MockEndpointsAndSkipDirtiesContextTest.class)
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsTest.java
index bacfc31..13c95e6 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsTest.java
@@ -19,15 +19,14 @@ package org.apache.camel.spring.boot.mockendpoints;
import org.apache.camel.CamelContext;
import org.apache.camel.FluentProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.apache.camel.test.spring.MockEndpoints;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.apache.camel.test.junit5.spring.MockEndpoints;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@MockEndpoints
@SpringBootApplication
@SpringBootTest(classes = MockEndpointsTest.class)
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/BarTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/BarTest.java
index f563e8a..5d5e25a 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/BarTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/BarTest.java
@@ -19,14 +19,13 @@ package org.apache.camel.spring.boot.routefilter;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@SpringBootApplication
@SpringBootTest(classes = BarTest.class,
properties = {"camel.springboot.java-routes-include-pattern=**/Bar*"})
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooExcludeRouteAnnotationTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooExcludeRouteAnnotationTest.java
index badc9a4..288c84a 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooExcludeRouteAnnotationTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooExcludeRouteAnnotationTest.java
@@ -19,15 +19,14 @@ package org.apache.camel.spring.boot.routefilter;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.apache.camel.test.spring.ExcludeRoutes;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.apache.camel.test.junit5.spring.ExcludeRoutes;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@SpringBootApplication()
@SpringBootTest(classes = FooTest.class)
@ExcludeRoutes({BarRoute.class, DrinkRoute.class})
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooTest.java
index f12b309..5b69324 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooTest.java
@@ -19,14 +19,13 @@ package org.apache.camel.spring.boot.routefilter;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@SpringBootApplication()
@SpringBootTest(classes = FooTest.class,
properties = {"camel.springboot.java-routes-exclude-pattern=**/Bar*,**/Drink*"})
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootExecutionListener.java
index 4192e5e..3e88a3f 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootExecutionListener.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootExecutionListener.java
@@ -20,6 +20,7 @@ import org.apache.camel.spring.SpringCamelContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.Ordered;
import org.springframework.test.context.TestContext;
import org.springframework.test.context.support.AbstractTestExecutionListener;
@@ -29,6 +30,15 @@ public class CamelSpringBootExecutionListener extends AbstractTestExecutionListe
private static final Logger LOG = LoggerFactory.getLogger(CamelSpringBootExecutionListener.class);
+ /**
+ * Ensure proper order of test execution listeners.
+ * @TODO: centralize in a kind of util precedence class ?
+ */
+ @Override
+ public int getOrder() {
+ return Ordered.HIGHEST_PRECEDENCE + 3000;
+ }
+
@Override
public void prepareTestInstance(TestContext testContext) throws Exception {
LOG.info("@RunWith(CamelSpringBootRunner.class) preparing: {}", testContext.getTestClass());
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootTest.java
similarity index 50%
copy from components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
copy to components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootTest.java
index f3aaee6..7114927 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootTest.java
@@ -16,24 +16,22 @@
*/
package org.apache.camel.test.junit5.spring;
-import org.apache.camel.api.management.JmxSystemPropertyKeys;
-import org.springframework.test.context.TestContext;
-import org.springframework.test.context.support.AbstractTestExecutionListener;
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
-/**
- * Provides reset to pre-test state behavior for global enable/disable of JMX
- * support in Camel through the use of {@link DisableJmx}.
- * Tries to ensure that the pre-test value is restored.
- */
-public class DisableJmxTestExecutionListener extends AbstractTestExecutionListener {
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
- @Override
- public void afterTestClass(TestContext testContext) throws Exception {
- if (CamelSpringTestHelper.getOriginalJmxDisabled() == null) {
- System.clearProperty(JmxSystemPropertyKeys.DISABLED);
- } else {
- System.setProperty(JmxSystemPropertyKeys.DISABLED, CamelSpringTestHelper.getOriginalJmxDisabled());
- }
- }
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+@ExtendWith(SpringExtension.class)
+@TestExecutionListeners(value = {CamelSpringTestContextLoaderTestExecutionListener.class, DisableJmxTestExecutionListener.class, CamelSpringBootExecutionListener.class,
+ StopWatchTestExecutionListener.class}, mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS)
+public @interface CamelSpringBootTest {
}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoaderTestExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoaderTestExecutionListener.java
index a749104..88e7d36 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoaderTestExecutionListener.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoaderTestExecutionListener.java
@@ -31,15 +31,12 @@ import org.springframework.test.context.support.AbstractTestExecutionListener;
public class CamelSpringTestContextLoaderTestExecutionListener extends AbstractTestExecutionListener {
/**
- * The default implementation returns {@link org.springframework.core.Ordered#LOWEST_PRECEDENCE},
- * thereby ensuring that custom listeners are ordered after default
- * listeners supplied by the framework. Can be overridden by subclasses
- * as necessary.
+ * Ensure proper order of test execution listeners.
+ * @TODO: centralize in a kind of util precedence class ?
*/
@Override
public int getOrder() {
- //set Camel first
- return Ordered.HIGHEST_PRECEDENCE;
+ return Ordered.HIGHEST_PRECEDENCE + 1000;
}
@Override
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
index f3aaee6..10e6c74 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
@@ -17,6 +17,7 @@
package org.apache.camel.test.junit5.spring;
import org.apache.camel.api.management.JmxSystemPropertyKeys;
+import org.springframework.core.Ordered;
import org.springframework.test.context.TestContext;
import org.springframework.test.context.support.AbstractTestExecutionListener;
@@ -27,6 +28,15 @@ import org.springframework.test.context.support.AbstractTestExecutionListener;
*/
public class DisableJmxTestExecutionListener extends AbstractTestExecutionListener {
+ /**
+ * Ensure proper order of test execution listeners.
+ * @TODO: centralize in a kind of util precedence class ?
+ */
+ @Override
+ public int getOrder() {
+ return Ordered.HIGHEST_PRECEDENCE + 2000;
+ }
+
@Override
public void afterTestClass(TestContext testContext) throws Exception {
if (CamelSpringTestHelper.getOriginalJmxDisabled() == null) {
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/StopWatchTestExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/StopWatchTestExecutionListener.java
index 535a7dc..e4c5115 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/StopWatchTestExecutionListener.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/StopWatchTestExecutionListener.java
@@ -20,6 +20,7 @@ import org.apache.camel.util.StopWatch;
import org.apache.camel.util.TimeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.core.Ordered;
import org.springframework.test.context.TestContext;
import org.springframework.test.context.support.AbstractTestExecutionListener;
@@ -37,6 +38,15 @@ public class StopWatchTestExecutionListener extends AbstractTestExecutionListene
return threadStopWatch.get();
}
+ /**
+ * Ensure proper order of test execution listeners.
+ * @TODO: centralize in a kind of util precedence class ?
+ */
+ @Override
+ public int getOrder() {
+ return Ordered.HIGHEST_PRECEDENCE + 4000;
+ }
+
@Override
public void beforeTestMethod(TestContext testContext) throws Exception {
StopWatch stopWatch = new StopWatch();