Adam Davies
Adam Davies

Reputation: 2812

Maven not Running Tests Specified in Profile

I've got a vary simple profile in my maven pom file to run some integration tests during the normal test phase. Note I do not want to run these tests during the normal integration-test phase because I do not want to build the war and deploy etc. The tests run fine as normal JUnit tests.

So here is my profile:

<profile>
  <id>AdminSeltests</id>
  <build>
    <plugins>
   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.12</version>

      <configuration>
          <includes>
            <include>**/*/TestSellerSignupWizard.java</include>
          </includes>
      </configuration>

      <executions>
      <execution>
        <id>execution2</id>
        <phase>test</phase>
       </execution>
      </executions>
    </plugin> 
    </plugins>
  </build>
</profile>

My test is called:

com.xxxxx.xxx.client.selenium.seller_signup.TestCustomerSignupWizard

However when I run the above profile with:

mvn test -P AdminSeltests

No tests are run. I have tried the following as the value(s):

<include>**/TestSellerSignupWizard.*</include>
<include>**/TestSeller*.*</include>
<include>**/TestSeller*.java</include>
<include>**/*/TestSeller*.java</include>
<include>
  com.xxxxx.xxx.client.selenium.seller_signup.TestCustomerSignupWizard.java
</include>

None of these work.

Any ideas anyone?

Thanks Adam

SOLVED: I'm using the maven-surefire-plugin and this has a automatic includes section which includes your normal test stuff. So I made an exclude configuration to exclude the normal unit tests, and then an include section to include a patter of integration test that I want to run

Not sure why it works this way, but it does:

<configuration>
    <excludes>
      <exclude>**/Test*.java</exclude>
      <exclude>**/*Test.java</exclude>
      <exclude>**/*TestCase.java</exclude>
    </excludes>
    <includes>
      <include>**/ITTestSellerSignupWizard.java</include>
    </includes>
</configuration>

Thanks for your help everyone.

Upvotes: 1

Views: 4267

Answers (1)

Michał Kalinowski
Michał Kalinowski

Reputation: 18013

The actual piece of code you did paste obviously doesn't work because you're mentioning class TestSellerSignupWizard while having tests in TestCustomerSignupWizard. I assume however it's a typo which doesn't matter actually because one of the Surefire's default mask for inclusion is **/Test*.java that fits well with you in this case.

So it all looks like working solution, so I'm afraid a problem is you don't have this class in your test classpath. You mentioned this is somehow related to integration testing so probably this class is located in src/it/java and not src/test/java that is Maven's default for Surefire. If I'm right, you should move this class into src/test/java or use (as you tried) alternative Surefire execution but with testSourceDirectory parameter overrided (link).

Upvotes: 2

Related Questions