Jörgen Lundberg
Jörgen Lundberg

Reputation: 1819

Maven failsafe plugin will not run test classes annotated with JUnit Category

I have an interface like this:

public interface IntegrationTest {
}

I configure the failsafe plugin like this:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.14</version>
    <configuration>
        <groups>acme.test.IntegrationTest</groups>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
            </goals>
        </execution>
    </executions>
</plugin>

If I then create an integration test like this

@Category(IntegrationTest.class)
public class ExampleClassIntegrationTest {

@Test
public void slow_and_painful_test() {

This test will not run.

If I however name the class according to the Inclusions and Exclusions of Tests

**/IT*.java
**/*IT.java
**/*ITCase.java

Like so:

@Category(IntegrationTest.class)
public class ExampleClassIT {

@Test
public void slow_and_painful_test() {

The test runs fine. Why do I have to name the test AND have an annotation when i use the groups-tag? Am I missing something? The documentation on using JUnit states that you can use the Category annotation at the class level.

Upvotes: 4

Views: 4973

Answers (2)

Madhusudanan K K C
Madhusudanan K K C

Reputation: 230

Thats because these are the default java classes which fail safe plugin includes when executed. You can however over ride this in your pom with tag : E.g

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

To include all the java files.

Upvotes: 9

khmarbaise
khmarbaise

Reputation: 97399

You should either add JUnit as a dependency (>4.8) which is already done or in particular add the following to your failsafe-plugin configuration:

<plugins>
[...]
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.14.1</version>
    <dependencies>
      <dependency>
        <groupId>org.apache.maven.surefire</groupId>
        <artifactId>surefire-junit47</artifactId>
        <version>2.14.1</version>
      </dependency>
    </dependencies>
  </plugin>
[...]
</plugins>

But i assume it will not change the situation.

Upvotes: 0

Related Questions