From 3d2c0cddc0133e3e206149b9fd7a7f8d3aa5dd54 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sun, 28 Jun 2020 16:19:06 +0530 Subject: [PATCH] JAVA-49: new module for maven integration testing & related plugins --- .../maven-integration-test/.gitignore | 2 + .../maven-integration-test/README.md | 10 + maven-modules/maven-integration-test/pom.xml | 283 ++++++++++++++++++ .../com/baeldung/maven/it/RestITCase.java | 24 ++ .../com/baeldung/maven/it/EndpointConfig.java | 9 + .../com/baeldung/maven/it/RestEndpoint.java | 12 + .../java/com/baeldung/maven/plugins/Data.java | 16 + .../src/main/resources/logback.xml | 13 + .../src/main/webapp/WEB-INF/web.xml | 17 ++ .../com/baeldung/maven/it/Integration.java | 4 + .../java/com/baeldung/maven/it/RestIT.java | 24 ++ .../maven/it/RestIntegrationTest.java | 24 ++ .../com/baeldung/maven/it/RestJUnitTest.java | 26 ++ .../com/baeldung/maven/plugins/DataCheck.java | 15 + .../baeldung/maven/plugins/DataUnitTest.java | 15 + .../src/test/java/testfail/TestFail.java | 18 ++ 16 files changed, 512 insertions(+) create mode 100644 maven-modules/maven-integration-test/.gitignore create mode 100644 maven-modules/maven-integration-test/README.md create mode 100644 maven-modules/maven-integration-test/pom.xml create mode 100644 maven-modules/maven-integration-test/src/integration-test/java/com/baeldung/maven/it/RestITCase.java create mode 100644 maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/it/EndpointConfig.java create mode 100644 maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/it/RestEndpoint.java create mode 100644 maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/plugins/Data.java create mode 100644 maven-modules/maven-integration-test/src/main/resources/logback.xml create mode 100644 maven-modules/maven-integration-test/src/main/webapp/WEB-INF/web.xml create mode 100644 maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/Integration.java create mode 100644 maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestIT.java create mode 100644 maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestIntegrationTest.java create mode 100644 maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestJUnitTest.java create mode 100644 maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/plugins/DataCheck.java create mode 100644 maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/plugins/DataUnitTest.java create mode 100644 maven-modules/maven-integration-test/src/test/java/testfail/TestFail.java diff --git a/maven-modules/maven-integration-test/.gitignore b/maven-modules/maven-integration-test/.gitignore new file mode 100644 index 0000000000..bae0b0d7ce --- /dev/null +++ b/maven-modules/maven-integration-test/.gitignore @@ -0,0 +1,2 @@ +/output-resources +/.idea/ diff --git a/maven-modules/maven-integration-test/README.md b/maven-modules/maven-integration-test/README.md new file mode 100644 index 0000000000..e73a73e61e --- /dev/null +++ b/maven-modules/maven-integration-test/README.md @@ -0,0 +1,10 @@ +## Apache Maven + +This module contains articles about Integration Testing with Maven and related plugins. + +### Relevant Articles + +- [Integration Testing with Maven](https://www.baeldung.com/maven-integration-test) +- [Build a Jar with Maven and Ignore the Test Results](https://www.baeldung.com/maven-ignore-test-results) +- [Quick Guide to the Maven Surefire Plugin](https://www.baeldung.com/maven-surefire-plugin) +- [The Maven Failsafe Plugin](https://www.baeldung.com/maven-failsafe-plugin) \ No newline at end of file diff --git a/maven-modules/maven-integration-test/pom.xml b/maven-modules/maven-integration-test/pom.xml new file mode 100644 index 0000000000..0031230bb1 --- /dev/null +++ b/maven-modules/maven-integration-test/pom.xml @@ -0,0 +1,283 @@ + + + 4.0.0 + maven-integration-test + 0.0.1-SNAPSHOT + maven-integration-test + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../.. + + + + + org.glassfish.jersey.containers + jersey-container-servlet-core + ${jersey.version} + + + org.glassfish.jersey.inject + jersey-hk2 + ${jersey.version} + + + junit + junit + ${junit.version} + test + + + + + + + org.eclipse.jetty + jetty-maven-plugin + ${jetty.version} + + + 8999 + + quit + 9000 + + + + start-jetty + pre-integration-test + + start + + + + stop-jetty + post-integration-test + + stop + + + + + + maven-resources-plugin + ${maven.resources.version} + + output-resources + + + input-resources + + *.png + + true + + + + + + maven-compiler-plugin + ${maven.compiler.version} + + ${java.version} + ${java.version} + + -Xlint:unchecked + + + + + maven-surefire-plugin + ${maven.surefire.version} + + + DataTest.java + **/*IntegrationTest + + com.baeldung.maven.it.Integration + + TestFail.java + DataCheck.java + + true + + + + maven-failsafe-plugin + ${maven.failsafe.version} + + + + integration-test + verify + + + + + + + + + maven-clean-plugin + ${maven.clean.version} + + + + output-resources + + + + + + org.codehaus.mojo + build-helper-maven-plugin + ${maven.build.helper.version} + + + add-integration-test-source + generate-test-sources + + add-test-source + + + + src/integration-test/java + + + + + add-integration-test-resource + generate-test-resources + + add-test-resource + + + + + src/integration-test/resources + + + + + + + + + + + + default + + + + maven-surefire-plugin + ${maven.surefire.version} + + + DataTest.java + + + TestFail.java + DataCheck.java + + true + + + + + + + failsafe + + + + maven-failsafe-plugin + ${maven.failsafe.version} + + + **/*RestIT + **/RestITCase + + + + + + integration-test + verify + + + + + + + + + surefire + + + + maven-surefire-plugin + ${maven.surefire.version} + + + integration-test + + test + + + + none + + + **/*IntegrationTest + + + + + + + + + + category + + + + maven-failsafe-plugin + ${maven.failsafe.version} + + + **/* + + com.baeldung.maven.it.Integration + + + + + integration-test + verify + + + + + + + + + + + 3.0.2 + 3.8.0 + 2.22.0 + 2.22.0 + 1.1 + 3.0.0 + 3.0.0 + 9.4.11.v20180605 + 2.27 + + + \ No newline at end of file diff --git a/maven-modules/maven-integration-test/src/integration-test/java/com/baeldung/maven/it/RestITCase.java b/maven-modules/maven-integration-test/src/integration-test/java/com/baeldung/maven/it/RestITCase.java new file mode 100644 index 0000000000..aaeeedb661 --- /dev/null +++ b/maven-modules/maven-integration-test/src/integration-test/java/com/baeldung/maven/it/RestITCase.java @@ -0,0 +1,24 @@ +package com.baeldung.maven.it; + +import org.junit.Test; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.util.Scanner; + +import static org.junit.Assert.assertEquals; + +public class RestITCase { + @Test + public void whenSendingGet_thenMessageIsReturned() throws IOException { + String url = "http://localhost:8999"; + URLConnection connection = new URL(url).openConnection(); + try (InputStream response = connection.getInputStream(); + Scanner scanner = new Scanner(response)) { + String responseBody = scanner.nextLine(); + assertEquals("Welcome to Baeldung!", responseBody); + } + } +} diff --git a/maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/it/EndpointConfig.java b/maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/it/EndpointConfig.java new file mode 100644 index 0000000000..919210ccff --- /dev/null +++ b/maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/it/EndpointConfig.java @@ -0,0 +1,9 @@ +package com.baeldung.maven.it; + +import org.glassfish.jersey.server.ResourceConfig; + +public class EndpointConfig extends ResourceConfig { + public EndpointConfig() { + register(RestEndpoint.class); + } +} diff --git a/maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/it/RestEndpoint.java b/maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/it/RestEndpoint.java new file mode 100644 index 0000000000..c234891865 --- /dev/null +++ b/maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/it/RestEndpoint.java @@ -0,0 +1,12 @@ +package com.baeldung.maven.it; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; + +@Path("/") +public class RestEndpoint { + @GET + public String hello() { + return "Welcome to Baeldung!"; + } +} diff --git a/maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/plugins/Data.java b/maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/plugins/Data.java new file mode 100644 index 0000000000..6ac6f9ab46 --- /dev/null +++ b/maven-modules/maven-integration-test/src/main/java/com/baeldung/maven/plugins/Data.java @@ -0,0 +1,16 @@ +package com.baeldung.maven.plugins; + +import java.util.ArrayList; +import java.util.List; + +public class Data { + List textList = new ArrayList(); + + public void addText(String text) { + textList.add(text); + } + + public List getTextList() { + return this.textList; + } +} diff --git a/maven-modules/maven-integration-test/src/main/resources/logback.xml b/maven-modules/maven-integration-test/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/maven-modules/maven-integration-test/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/maven-modules/maven-integration-test/src/main/webapp/WEB-INF/web.xml b/maven-modules/maven-integration-test/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..1751ad17a5 --- /dev/null +++ b/maven-modules/maven-integration-test/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,17 @@ + + + rest-servlet + org.glassfish.jersey.servlet.ServletContainer + + javax.ws.rs.Application + com.baeldung.maven.it.EndpointConfig + + + + rest-servlet + /* + + \ No newline at end of file diff --git a/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/Integration.java b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/Integration.java new file mode 100644 index 0000000000..112ce178ce --- /dev/null +++ b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/Integration.java @@ -0,0 +1,4 @@ +package com.baeldung.maven.it; + +public interface Integration { +} diff --git a/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestIT.java b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestIT.java new file mode 100644 index 0000000000..0115d34f1e --- /dev/null +++ b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestIT.java @@ -0,0 +1,24 @@ +package com.baeldung.maven.it; + +import org.junit.Test; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.util.Scanner; + +import static org.junit.Assert.assertEquals; + +public class RestIT { + @Test + public void whenSendingGet_thenMessageIsReturned() throws IOException { + String url = "http://localhost:8999"; + URLConnection connection = new URL(url).openConnection(); + try (InputStream response = connection.getInputStream(); + Scanner scanner = new Scanner(response)) { + String responseBody = scanner.nextLine(); + assertEquals("Welcome to Baeldung!", responseBody); + } + } +} diff --git a/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestIntegrationTest.java b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestIntegrationTest.java new file mode 100644 index 0000000000..2f913c8429 --- /dev/null +++ b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestIntegrationTest.java @@ -0,0 +1,24 @@ +package com.baeldung.maven.it; + +import org.junit.Test; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.util.Scanner; + +import static org.junit.Assert.assertEquals; + +public class RestIntegrationTest { + @Test + public void whenSendingGet_thenMessageIsReturned() throws IOException { + String url = "http://localhost:8999"; + URLConnection connection = new URL(url).openConnection(); + try (InputStream response = connection.getInputStream(); + Scanner scanner = new Scanner(response)) { + String responseBody = scanner.nextLine(); + assertEquals("Welcome to Baeldung!", responseBody); + } + } +} diff --git a/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestJUnitTest.java b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestJUnitTest.java new file mode 100644 index 0000000000..60995d75bd --- /dev/null +++ b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/it/RestJUnitTest.java @@ -0,0 +1,26 @@ +package com.baeldung.maven.it; + +import org.junit.Test; +import org.junit.experimental.categories.Category; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.util.Scanner; + +import static org.junit.Assert.assertEquals; + +@Category(Integration.class) +public class RestJUnitTest { + @Test + public void whenSendingGet_thenMessageIsReturned() throws IOException { + String url = "http://localhost:8999"; + URLConnection connection = new URL(url).openConnection(); + try (InputStream response = connection.getInputStream(); + Scanner scanner = new Scanner(response)) { + String responseBody = scanner.nextLine(); + assertEquals("Welcome to Baeldung!", responseBody); + } + } +} diff --git a/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/plugins/DataCheck.java b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/plugins/DataCheck.java new file mode 100644 index 0000000000..9aaf0fb071 --- /dev/null +++ b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/plugins/DataCheck.java @@ -0,0 +1,15 @@ +package com.baeldung.maven.plugins; + +import static org.junit.Assert.assertNotNull; + +import org.junit.Test; + +import com.baeldung.maven.plugins.Data; + +public class DataCheck { + @Test + public void whenDataObjectIsCreated_thenItIsNotNull() { + Data data = new Data(); + assertNotNull(data); + } +} diff --git a/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/plugins/DataUnitTest.java b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/plugins/DataUnitTest.java new file mode 100644 index 0000000000..197f977fec --- /dev/null +++ b/maven-modules/maven-integration-test/src/test/java/com/baeldung/maven/plugins/DataUnitTest.java @@ -0,0 +1,15 @@ +package com.baeldung.maven.plugins; + +import static org.junit.Assert.assertNull; + +import org.junit.Test; + +import com.baeldung.maven.plugins.Data; + +public class DataUnitTest { + @Test + public void whenDataObjectIsNotCreated_thenItIsNull() { + Data data = null; + assertNull(data); + } +} diff --git a/maven-modules/maven-integration-test/src/test/java/testfail/TestFail.java b/maven-modules/maven-integration-test/src/test/java/testfail/TestFail.java new file mode 100644 index 0000000000..3febd21031 --- /dev/null +++ b/maven-modules/maven-integration-test/src/test/java/testfail/TestFail.java @@ -0,0 +1,18 @@ +package testfail; + +import org.junit.Test; +import org.junit.Ignore; + +import static org.junit.Assert.assertNotNull; + +public class TestFail { + + @Ignore //ignored so the entire tutorials build passes + @Test + public void whenMessageAssigned_thenItIsNotNull() { + String message = "hello there"; + message = null; + assertNotNull(message); + } + +}