Sunday 5 November 2017

java - Maven does not find JUnit tests to run

itemprop="text">

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:




            version="1.0" encoding="UTF-8"?>
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">

4.0.0

my_group

my_program

jar

1.0-SNAPSHOT
My
Program





junit

junit

4.8.1

test









org.apache.maven.plugins

maven-compiler-plugin


1.5

1.5










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]
------------------------------------------------------------------------


Answer




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





  • Test*

  • *Test

  • *TestCase



Your
test class doesn't follow these conventions. You should rename it or href="https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#includes"
rel="noreferrer">configure Maven Surefire Plugin to use another pattern for
test classes.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...