You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2020/11/02 13:33:41 UTC
[camel-spring-boot] branch master updated: Updated archetype to
unclude JUnit 5 test example
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git
The following commit(s) were added to refs/heads/master by this push:
new a29ee8f Updated archetype to unclude JUnit 5 test example
a29ee8f is described below
commit a29ee8f4a79af834b85ee2ae3841f28b0f65e618
Author: Farid Guliyev <fg...@gmail.com>
AuthorDate: Mon Nov 2 08:29:20 2020 -0500
Updated archetype to unclude JUnit 5 test example
---
.../src/main/resources/archetype-resources/pom.xml | 8 ++-
.../main/resources/archetype-resources/readme.adoc | 9 +++-
.../src/test/java/MySpringBootApplicationTest.java | 63 ++++++++++++++++++++++
3 files changed, 78 insertions(+), 2 deletions(-)
diff --git a/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/pom.xml b/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/pom.xml
index f5a4327..70087fa 100644
--- a/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/pom.xml
@@ -31,6 +31,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring.boot-version>${spring-boot-version}</spring.boot-version>
+ <surefire.plugin.version>3.0.0-M4</surefire.plugin.version>
</properties>
<dependencyManagement>
@@ -94,7 +95,7 @@
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
- <artifactId>camel-test-spring</artifactId>
+ <artifactId>camel-test-spring-junit5</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
@@ -122,6 +123,11 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>${surefire.plugin.version}</version>
+ </plugin>
</plugins>
</build>
diff --git a/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/readme.adoc b/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/readme.adoc
index 73d6e18..fa027df 100644
--- a/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/readme.adoc
+++ b/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/readme.adoc
@@ -9,10 +9,11 @@ The example generates messages using timer trigger, writes them to standard outp
The Camel route is located in the `MyCamelRouter` class. In this class the route
starts from a timer, that triggers every 2nd second and calls a Spring Bean `MyBean`
which returns a message, that is routed to a stream endpoint which writes to standard output.
+The example contains test class demonstrating how to intercept and mock endpoints in unit tests using JUnit 5 and Camel Test Support.
== Using Camel components
-Apache Camel provides 200+ components which you can use to integrate and route messages between many systems
+Apache Camel provides 300+ components which you can use to integrate and route messages between many systems
and data formats. To use any of these Camel components, add the component as a dependency to your project.
== How to run
@@ -21,6 +22,12 @@ You can run this example using
mvn spring-boot:run
+== How to run test
+
+You can run unit test of this example using
+
+ mvn clean test
+
== To get info about the routes
To show a summary of all the routes
diff --git a/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/src/test/java/MySpringBootApplicationTest.java b/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/src/test/java/MySpringBootApplicationTest.java
new file mode 100644
index 0000000..a25b802
--- /dev/null
+++ b/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/src/test/java/MySpringBootApplicationTest.java
@@ -0,0 +1,63 @@
+## ------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ------------------------------------------------------------------------
+package ${package};
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.AdviceWith;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
+import org.junit.jupiter.api.Test;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+@CamelSpringBootTest
+public class MySpringBootApplicationTest {
+
+ @Autowired
+ private CamelContext camelContext;
+
+ @Autowired
+ private ProducerTemplate producerTemplate;
+
+ @Test
+ public void test() throws Exception {
+ MockEndpoint mock = camelContext.getEndpoint("mock:stream:out", MockEndpoint.class);
+
+ AdviceWith.adviceWith(camelContext, "hello",
+ // intercepting an exchange on route
+ r -> {
+ // replacing consumer with direct component
+ r.replaceFromWith("direct:start");
+ // mocking producer
+ r.mockEndpoints("stream*");
+ }
+ );
+
+ // setting expectations
+ mock.expectedMessageCount(1);
+ mock.expectedBodiesReceived("Hello World");
+
+ // invoking consumer
+ producerTemplate.sendBody("direct:start", null);
+
+ // asserting mock is satisfied
+ mock.assertIsSatisfied();
+ }
+}