Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Java by (10.2k points)

I have a maven2 multi-module project and in each of my child modules I have JUnit tests that are named Test.java and Integration.java for unit tests and integration tests respectively. When I execute:

mvn test

all of the JUnit tests *Test.java within the child modules are executed. When I execute

mvn test -Dtest=**/*Integration

none of the Integration.java tests get execute within the child modules.

These seem like the exact same command to me but the one with the -Dtest=/*Integration** does not work it displays 0 tests being run at the parent level, which there are not any tests

1 Answer

0 votes
by (46k points)

You can set up Maven's Surefire to run unit tests and integration tests separately. In the standard unit test phase you run everything that does not pattern match an integration test. You then create a second test phase that runs just the integration tests.

Here is an example:

    <plugin>

      <groupId>org.apache.maven.plugins</groupId>

      <artifactId>maven-surefire-plugin</artifactId>

      <configuration>

        <excludes>

          <exclude>**/*IntegrationTest.java</exclude>

        </excludes>

      </configuration>

      <executions>

        <execution>

          <id>integration-test</id>

          <goals>

            <goal>test</goal>

          </goals>

          <phase>integration-test</phase>

          <configuration>

            <excludes>

              <exclude>none</exclude>

            </excludes>

            <includes>

              <include>**/*IntegrationTest.java</include>

            </includes>

          </configuration>

        </execution>

      </executions>

    </plugin>

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...