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();
+	}
+}