0

I want to separate tests into 3 different categories:

  • unit
  • componnet
  • system

Then I want to run them separately on different phases and display results of execution these tests into 3 different surefire reports, or maybe one but with tests resultsd divided into 3 different catagories.

How to achieve it with maven?

I know I can run tests separately using failsafe maven plugin. So it is not problem.

There only problem have I can devide report into 3 catagories.

user925531
  • 91
  • 5

1 Answers1

3

I am using maven-surefire-plugin with junit categories.

    <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.2</version>
            <executions>
                <execution>
                    <id>unit-tests</id>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <groups>com.mycompany.mavenproject2.UnitTest</groups> 
                        <reportsDirectory> ${project.build.directory}/surefire-reports/unit</reportsDirectory> 
                        <reportNameSuffix>UNIT</reportNameSuffix>      
                    </configuration>     
                </execution>
                <execution>
                    <id>comp-tests</id>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <groups>com.mycompany.mavenproject2.ComponentTest</groups>
                        <reportsDirectory> ${project.build.directory}/surefire-reports/comp</reportsDirectory> 
                        <reportNameSuffix>COMPONENT</reportNameSuffix>                
                    </configuration>     
                </execution>
                <execution>
                    <id>sys-tests</id>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <groups>com.mycompany.mavenproject2.SystemTest</groups>
                        <reportsDirectory> ${project.build.directory}/surefire-reports/sys</reportsDirectory>
                        <reportNameSuffix>SYSTEM</reportNameSuffix>                  
                    </configuration>     
                </execution>
            </executions>
        </plugin>

It works fine,except that it run first all tests not separating them into categories. How to remove such behaviour?

Build produced an output.

T E S T S

Running com.mycompany.mavenproject2.AppTest UnitTest ComponentTest SystemTest Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec

Results :

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0

[surefire:test] Surefire report directory: C:\Users\mz\Documents\NetBeansProjects\mavenproject2\target\surefire-reports\unit


T E S T S

Concurrency config is parallel='none', perCoreThreadCount=true, threadCount=2, useUnlimitedThreads=false Running com.mycompany.mavenproject2.AppTest UnitTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[surefire:test] Surefire report directory: C:\Users\mz\Documents\NetBeansProjects\mavenproject2\target\surefire-reports\comp


T E S T S

Concurrency config is parallel='none', perCoreThreadCount=true, threadCount=2, useUnlimitedThreads=false Running com.mycompany.mavenproject2.AppTest ComponentTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[surefire:test] Surefire report directory: C:\Users\mz\Documents\NetBeansProjects\mavenproject2\target\surefire-reports\sys


T E S T S

Concurrency config is parallel='none', perCoreThreadCount=true, threadCount=2, useUnlimitedThreads=false Running com.mycompany.mavenproject2.AppTest SystemTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

user925531
  • 91
  • 5
  • 1
    Your default configuration needs to exclude all groups that you want to run later on. So in your top level configuration (before execution blocks) - define an block that lists all your groups – tddmonkey Nov 12 '12 at 14:06