Probably not the only solution to generate a code coverage HMTL report during the maven build process, but the Emma plugin does the job. In one pass. The code is available from Github in the Code-Coverage-One-Pass directory.
Assuming the following class:
with the following JUnit test:
one can configure the pom.xml as following:
It will produce an index.html file in /target/site/emma/ (always the same location, so you can keep you browser open and refresh the after each build process):
Assuming the following class:
public class ClassToTest { public static int coveredMethod( int i) { return i + 2 ; } public static int uncoveredMethod( int i) { return i + 3 ; } } |
public class ClassToTestTest { public ClassToTestTest() { } @Test public void testCoveredMethod() { assertEquals( 4 ,ClassToTest.coveredMethod( 2 )); } } |
< build > < plugins > < plugin > < groupId >org.sonatype.maven.plugin</ groupId > < artifactId >emma-maven-plugin</ artifactId > < version >1.2</ version > < executions > < execution > < phase >process-classes</ phase > < goals > < goal >instrument</ goal > </ goals > </ execution > </ executions > </ plugin > < plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-surefire-plugin</ artifactId > < version >2.12</ version > < configuration > < classesDirectory >${project.build.directory}/generated-classes/emma/classes</ classesDirectory > </ configuration > </ plugin > < plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-compiler-plugin</ artifactId > < version >2.5.1</ version > < configuration > < source >${maven.compiler.source}</ source > < target >${maven.compiler.target}</ target > </ configuration > </ plugin > < plugin > < groupId >org.sonatype.maven.plugin</ groupId > < artifactId >emma4it-maven-plugin</ artifactId > < version >1.3</ version > < executions > < execution > < id >instrument</ id > < goals > < goal >instrument-project-artifact</ goal > </ goals > < configuration > < appendEmma >true</ appendEmma > </ configuration > </ execution > < execution > < id >report</ id > < phase >post-integration-test</ phase > < goals > < goal >report</ goal > </ goals > < configuration > < sourceSets > < sourceSet > < directory >${project.build.sourceDirectory}</ directory > </ sourceSet > </ sourceSets > </ configuration > </ execution > </ executions > </ plugin > </ plugins > </ build > < dependencies > < dependency > < groupId >org.sonatype.maven.plugin</ groupId > < artifactId >emma-maven-plugin</ artifactId > < version >1.2</ version > </ dependency > ... </ dependencies > |
It will produce an index.html file in /target/site/emma/ (always the same location, so you can keep you browser open and refresh the after each build process):
0 comments :
Post a Comment