23
votes

I needed to move some src/test/java to src/main/java according to this recommandation from maven-jar-plugin documentation => http://maven.apache.org/plugins/maven-jar-plugin/usage.html

I did so because, i used tests (helper) classes in another projects in test scope.

So i create my-project-test, moved in test classes, and configured surefire to specify test classes directory =>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <testSourceDirectory>${basedir}\src\main\java\</testSourceDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>

But when i launched mvn test, 0 tests is executed =>

Results :

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

The problem is the same as this one => Maven does not find JUnit tests to run but the solution (configure surefire maven plugin) is not working for me.

2
Are you trying to run integration tests ? Furthermore why are you defining the testSourceDirectory ? And why are you using back-slashes ?khmarbaise
As @khmarbaise mentioned, maybe it comes from the backslashes.ndeverge
I tried ${basedir}/src/main/java/ or src/main/java/ but it's the same Tests run: 0, Failures: 0, Errors: 0, Skipped: 0Antoine

2 Answers

30
votes

The good configuration for maven surefire plugin is =>

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <testSourceDirectory>${basedir}/src/main/java/</testSourceDirectory>
                    <testClassesDirectory>${project.build.directory}/classes/</testClassesDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>

Results :

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

Since the test classes have now been placed in src/main/java, it is likely that they are getting compiled during the compile phase to target/classes.

So, though surefire is configured to indicate that the test source location is src/main/java, it would still look for test classes in target/test-classes, since this is the default location for test classes.

You could try specify testClassesDirectory parameter suitably and see if it works.

Also, I think you may have misinterpreted the recommendation in the maven jar plugin documentation. I do not believe they suggest moving test sources to src/main/java.