When using Maven to create a project it creates a class with main method as well as the test cases.
The content of AppTest.java
package com.java2s.ide; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Unit test for simple App. */ public class AppTest extends TestCase { /** * Create the test case * * @param testName name of the test case */ public AppTest( String testName ) { super( testName ); } /** * @return the suite of tests being tested */ public static Test suite() { return new TestSuite( AppTest.class ); } /** * Rigourous Test :-) */ public void testApp() { assertTrue( true ); } }
To run unit test via Maven, issue this command :
c:\mvn_test\xmlFileEditor>mvn test
The code above generates the following result.
c:\mvn_test\xmlFileEditor>mvn test [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building xmlFileEditor 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ xmlFileEditor --- [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory c:\mvn_test\xmlFileEditor\src\main\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ xmlFileEditor --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ xmlFileEditor --- [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory c:\mvn_test\xmlFileEditor\src\test\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ xmlFileEditor --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ xmlFileEditor --- [INFO] Surefire report directory: c:\mvn_test\xmlFileEditor\target\surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.java2s.ide.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.765 s [INFO] Finished at: 2014-11-22T10:14:39-08:00 [INFO] Final Memory: 19M/369M [INFO] ------------------------------------------------------------------------ c:\mvn_test\xmlFileEditor>
We can add more test cases to test directory. First we add two more static method to App.java. The two dummy methods just return String constant. We are going to use those methods to illustrate how to add test cases to Maven project.
package com.java2s.ide; public class App { public static void main(String[] args) { System.out.println(getHelloWorld()); } public static String getHelloWorld() { return "Hello World"; } public static String getHelloWorld2() { return "Hello World 2"; } }
We can unit test for getHelloWorld() method by adding a new class to the test
folder.
package com.java2s.ide; import junit.framework.Assert; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestApp1 { public void testPrintHelloWorld() { Assert.assertEquals(App.getHelloWorld(), "Hello World"); } }
The following code shows how to add another unit test for getHelloWorld2() method.
package com.java2s.ide; import junit.framework.Assert; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestApp2 { public void testPrintHelloWorld2() { Assert.assertEquals(App.getHelloWorld2(), "Hello World 2"); } }
After adding those two test cases we can run the following Maven command again for testing.
c:\mvn_test\xmlFileEditor>mvn test
The code above generates the following result.
c:\mvn_test\xmlFileEditor>mvn clean test [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building xmlFileEditor 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ xmlFileEditor --- [INFO] Deleting c:\mvn_test\xmlFileEditor\target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ xmlFileEditor --- [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory c:\mvn_test\xmlFileEditor\src\main\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ xmlFileEditor --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent! [INFO] Compiling 1 source file to c:\mvn_test\xmlFileEditor\target\classes [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ xmlFileEditor --- [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory c:\mvn_test\xmlFileEditor\src\test\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ xmlFileEditor --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent! [INFO] Compiling 3 source files to c:\mvn_test\xmlFileEditor\target\test-classes [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ xmlFileEditor --- [INFO] Surefire report directory: c:\mvn_test\xmlFileEditor\target\surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.java2s.ide.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Running com.java2s.ide.TestApp1 Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Running com.java2s.ide.TestApp2 Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Results : Tests run: 3, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 5.125 s [INFO] Finished at: 2014-11-22T10:22:06-08:00 [INFO] Final Memory: 25M/369M [INFO] ------------------------------------------------------------------------ c:\mvn_test\xmlFileEditor>
The command above runs all test cases
To run single test (TestApp1
), issue this command :
mvn -Dtest=TestApp1 test
The command above generates the following result.
c:\mvn_test\xmlFileEditor>mvn -Dtest=TestApp1 test [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building xmlFileEditor 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ xmlFileEditor --- [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory c:\mvn_test\xmlFileEditor\src\main\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ xmlFileEditor --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ xmlFileEditor --- [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory c:\mvn_test\xmlFileEditor\src\test\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ xmlFileEditor --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ xmlFileEditor --- [INFO] Surefire report directory: c:\mvn_test\xmlFileEditor\target\surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.java2s.ide.TestApp1 Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.704 s [INFO] Finished at: 2014-11-22T10:22:54-08:00 [INFO] Final Memory: 19M/369M [INFO] ------------------------------------------------------------------------ c:\mvn_test\xmlFileEditor>
We can skip test by using the following command.
mvn package -Dmaven.test.skip=true
The command above generates the following result.
c:\mvn_test\xmlFileEditor>mvn package -Dmaven.test.skip=true [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building xmlFileEditor 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ xmlFileEditor --- [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory c:\mvn_test\xmlFileEditor\src\main\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ xmlFileEditor --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ xmlFileEditor --- [INFO] Not copying test resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ xmlFileEditor --- [INFO] Not compiling test sources [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ xmlFileEditor --- [INFO] Tests are skipped. [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ xmlFileEditor --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.703 s [INFO] Finished at: 2014-11-22T10:25:31-08:00 [INFO] Final Memory: 15M/369M [INFO] ------------------------------------------------------------------------ c:\mvn_test\xmlFileEditor>