Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven does not find JUnit tests to run

Tags:

java

junit

maven

I have a maven program, it compiles fine. When I run mvn test it does not run any tests (under TESTs header says There are no tests to run.).

I've recreated this problem with a super simple setup which I will include below as well as the output when run with -X.

The unit tests run fine from eclipse (both with its default junit package and when I instead include the junit.jar downloaded by maven). Also mvn test-compile correctly creates the class under test-classes. I am running this on OSX 10.6.7 with Maven 3.0.2 and java 1.6.0_24.

Here is the directory structure:

/my_program/pom.xml /my_program/src/main/java/ClassUnderTest.java /my_program/src/test/java/ClassUnderTestTests.java 

pom.xml:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">     <modelVersion>4.0.0</modelVersion>     <groupId>my_group</groupId>     <artifactId>my_program</artifactId>     <packaging>jar</packaging>     <version>1.0-SNAPSHOT</version>     <name>My Program</name>     <dependencies>         <dependency>             <groupId>junit</groupId>             <artifactId>junit</artifactId>             <version>4.8.1</version>             <scope>test</scope>         </dependency>     </dependencies>     <build>         <plugins>             <plugin>                 <groupId>org.apache.maven.plugins</groupId>                 <artifactId>maven-compiler-plugin</artifactId>                 <configuration>                     <source>1.5</source>                     <target>1.5</target>                 </configuration>             </plugin>         </plugins>     </build> </project> 

ClassUnderTest.java:

public class ClassUnderTest {      public int functionUnderTest(int n) {         return n;     }  } 

ClassUnderTestTests.java:

import org.junit.Assert; import org.junit.Before; import org.junit.Test;  public class ClassUnderTestTests {      private ClassUnderTest o;      @Before     public void setUp() {         o = new ClassUnderTest();     }      @Test     public void testFunctionUnderTest_testCase1() {         Assert.assertEquals(1, o.functionUnderTest(1));     }      @Test     public void testFunctionUnderTest_testCase2() {         Assert.assertEquals(2, o.functionUnderTest(2));     } } 

End of mvn -X test:

[DEBUG] Configuring mojo org.apache.maven.plugins:maven-surefire-plugin:2.7.1:test from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-surefire-plugin:2.7.1, parent: sun.misc.Launcher$AppClassLoader@5224ee] [DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-surefire-plugin:2.7.1:test' with basic configurator --> [DEBUG]   (s) basedir = /Users/aaron/Programs/my_program [DEBUG]   (s) childDelegation = false [DEBUG]   (s) classesDirectory = /Users/aaron/Programs/my_program/target/classes [DEBUG]   (s) disableXmlReport = false [DEBUG]   (s) enableAssertions = true [DEBUG]   (s) forkMode = once [DEBUG]   (s) junitArtifactName = junit:junit [DEBUG]   (s) localRepository =        id: local       url: file:///Users/aaron/.m2/repository/    layout: none  [DEBUG]   (f) parallelMavenExecution = false [DEBUG]   (s) pluginArtifactMap = {org.apache.maven.plugins:maven-surefire-plugin=org.apache.maven.plugins:maven-surefire-plugin:maven-plugin:2.7.1:, org.apache.maven.surefire:surefire-booter=org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile, org.apache.maven.surefire:surefire-api=org.apache.maven.surefire:surefire-api:jar:2.7.1:compile, org.apache.maven.surefire:maven-surefire-common=org.apache.maven.surefire:maven-surefire-common:jar:2.7.1:compile, org.apache.maven.shared:maven-common-artifact-filters=org.apache.maven.shared:maven-common-artifact-filters:jar:1.3:compile, org.codehaus.plexus:plexus-utils=org.codehaus.plexus:plexus-utils:jar:2.0.5:compile, junit:junit=junit:junit:jar:3.8.1:compile, org.apache.maven.reporting:maven-reporting-api=org.apache.maven.reporting:maven-reporting-api:jar:2.0.9:compile} [DEBUG]   (s) printSummary = true [DEBUG]   (s) project = MavenProject: my_group:my_program:1.0-SNAPSHOT @ /Users/aaron/Programs/my_program/pom.xml [DEBUG]   (s) projectArtifactMap = {junit:junit=junit:junit:jar:4.8.1:test} [DEBUG]   (s) redirectTestOutputToFile = false [DEBUG]   (s) remoteRepositories = [       id: central       url: http://repo1.maven.org/maven2    layout: default snapshots: [enabled => false, update => daily]  releases: [enabled => true, update => never] ] [DEBUG]   (s) reportFormat = brief [DEBUG]   (s) reportsDirectory = /Users/aaron/Programs/my_program/target/surefire-reports [DEBUG]   (s) session = org.apache.maven.execution.MavenSession@dfbb43 [DEBUG]   (s) skip = false [DEBUG]   (s) skipTests = false [DEBUG]   (s) testClassesDirectory = /Users/aaron/Programs/my_program/target/test-classes [DEBUG]   (s) testFailureIgnore = false [DEBUG]   (s) testNGArtifactName = org.testng:testng [DEBUG]   (s) testSourceDirectory = /Users/aaron/Programs/my_program/src/test/java [DEBUG]   (s) trimStackTrace = true [DEBUG]   (s) useFile = true [DEBUG]   (s) useManifestOnlyJar = true [DEBUG]   (s) workingDirectory = /Users/aaron/Programs/my_program [DEBUG] -- end configuration -- [INFO] Surefire report directory: /Users/aaron/Programs/my_program/target/surefire-reports [DEBUG] Setting system property [user.dir]=[/Users/aaron/Programs/my_program] [DEBUG] Setting system property [localRepository]=[/Users/aaron/.m2/repository] [DEBUG] Setting system property [basedir]=[/Users/aaron/Programs/my_program] [DEBUG] Using JVM: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java [DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository [DEBUG] dummy:dummy:jar:1.0 (selected for null) [DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile (selected for compile) [DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:compile (selected for compile) [DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.1/surefire-booter-2.7.1.jar Scope: compile [DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: compile [DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository [DEBUG] dummy:dummy:jar:1.0 (selected for null) [DEBUG]   org.apache.maven.surefire:surefire-junit4:jar:2.7.1:test (selected for test) [DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:test (selected for test) [DEBUG] Adding to surefire test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-junit4/2.7.1/surefire-junit4-2.7.1.jar Scope: test [DEBUG] Adding to surefire test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: test [DEBUG] Test Classpath : [DEBUG]   /Users/aaron/Programs/my_program/target/test-classes [DEBUG]   /Users/aaron/Programs/my_program/target/classes [DEBUG]   /Users/aaron/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar [DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository [DEBUG] dummy:dummy:jar:1.0 (selected for null) [DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile (selected for compile) [DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:compile (selected for compile) [DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.1/surefire-booter-2.7.1.jar Scope: compile [DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: compile Forking command line: /bin/sh -c cd /Users/aaron/Programs/my_program && /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -jar /Users/aaron/Programs/my_program/target/surefire/surefirebooter6118081963679415631.jar /Users/aaron/Programs/my_program/target/surefire/surefire4887918564882595612tmp /Users/aaron/Programs/my_program/target/surefire/surefire9012255138269731406tmp  -------------------------------------------------------  T E S T S ------------------------------------------------------- There are no tests to run.  Results :  Tests run: 0, Failures: 0, Errors: 0, Skipped: 0  [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.089s [INFO] Finished at: Mon May 30 12:03:09 EDT 2011 [INFO] Final Memory: 7M/62M [INFO] ------------------------------------------------------------------------ 
like image 635
Aaron Silverman Avatar asked May 30 '11 16:05

Aaron Silverman


People also ask

How do I run a JUnit test in Maven?

We can run our unit tests with Maven by using the command: mvn clean test. When we run this command at command prompt, we should see that the Maven Surefire Plugin runs our unit tests. We can now create a Maven project that compiles and runs unit tests which use JUnit 5.

How do I run a JUnit test in Maven project in Eclipse?

you can run Junit 4 with Maven. You just need the Junit 4 dependency in your pom. You also need the surefire plugin to execute the tests. Hint: By default surefire looks for files with *Test.


1 Answers

By default Maven uses the following naming conventions when looking for tests to run:

  • Test*
  • *Test
  • *Tests (has been added in Maven Surefire Plugin 2.20)
  • *TestCase

If your test class doesn't follow these conventions you should rename it or configure Maven Surefire Plugin to use another pattern for test classes.

like image 138
axtavt Avatar answered Sep 17 '22 14:09

axtavt