Raible's Wiki
Raible Designs AppFuseHomepage- Korean - Chinese - Italian - Japanese QuickStart Guide User Guide Tutorials Other ApplicationsStruts ResumeSecurity Example Struts Menu
Set your name in
UserPreferences
Referenced by
JSPWiki v2.2.33
Hide Menu |
Code Coverage - How To for integrating Emma with AppFuse 1.8.1 ant build. If you'd prefer to use Cobertura, please see the AppFuse + Cobertura HowTo. If you're trying to decide if EMMA or Cobertura is a better solution, you may want to check out opinion's expressed on Matt's Cobertura vs. EMMA blog entry. All of what is written below was included in default AppFuse from 1.9.2 on. You only need to execute it if you want EMMA in pre 1.9.2 AppFuse.
# # Emma http://emma.sourceforge.net # emma.version=2.0.5312 emma.dir=${lib.dir}/emma-${emma.version} emma.jar=${lib.dir}/emma-${emma.version}/emma.jar
<path id="emma.libs" > <pathelement location="${emma.dir}/emma.jar" /> <pathelement location="${emma.dir}/emma_ant.jar" /> </path> <path id="all.sources" > <pathelement path="src/dao" /> <pathelement path="src/service" /> <pathelement path="src/web" /> </path> <taskdef resource="emma_ant.properties" classpathref="emma.libs" />
<target name="emma" description="turns on EMMA instrumentation/reporting" > <property name="emma.enabled" value="true" /> <!-- EMMA coverage data output directory: --> <property name="coverage.dir" value="${test.dir}/coverage" /> <!-- EMMA instrumented classes output directory: --> <property name="out.instr.dir" value="${test.dir}/outinstr" /> <mkdir dir="${out.instr.dir}" /> <!-- Filter for classes to instrument --> <property name="emma.filter" value="org.appfuse.*" /> </target>
<delete dir="${out.instr.dir}"/> <delete dir="${coverage.dir}"/>
<delete dir="${out.instr.dir}"/>
<emma enabled="${emma.enabled}" > <instr instrpath="${build.dir}/@{module}/classes" destdir="${out.instr.dir}/@{module}/classes" metadatafile="${coverage.dir}/metadata-@{module}.emma" merge="true" /> </emma>
<macrodef name="test-module"> <attribute name="module"/> <attribute name="additional.src.dirs" default=""/> <element name="options" optional="yes"/> <sequential> <echo level="info">Testing @{module}...</echo> <mkdir dir="${test.dir}/data"/> <propertycopy name="testcase" from="@{module}-testcase" silent="true"/> <!-- Replace tokens in test properties files --> <copy todir="${test.dir}/@{module}/classes"> <fileset dir="test/@{module}" excludes="**/*.java"/> <filterset refid="variables.to.replace"/> </copy> <junit printsummary="no" forkmode="once" errorProperty="test.failed" failureProperty="test.failed" fork="${junit.fork}"> <classpath> <!-- Instrumented classes - must be BEFORE the normal ones --> <!-- ============================= --> <pathelement location="${out.instr.dir}/@{module}/classes" /> <pathelement path="@{additional.src.dirs}"/> <path refid="@{module}.test.classpath"/> <pathelement location="${build.dir}/@{module}/classes"/> <pathelement location="${test.dir}/@{module}/classes"/> <pathelement path="${java.class.path}"/> <pathelement path="${webapp.target}"/> <pathelement path="${build.dir}/dao/gen"/> <!-- For .properties and .xml files --> <pathelement path="${build.dir}/web/classes"/> <pathelement path="src/@{module}"/> <!-- Emma library --> <!-- ============================= --> <pathelement location="${emma.jar}" /> </classpath> <!-- emma-specific jvm parameter --> <!-- =========================== --> <jvmarg value="-Demma.coverage.out.file=${coverage.dir}/coverage-@{module}.emma" /> <formatter type="xml"/> <formatter type="brief" usefile="false"/> <batchtest todir="${test.dir}/data" if="testcase"> <fileset dir="${test.dir}/@{module}/classes"> <include name="**/*${testcase}*"/> <exclude name="**/*TestCase.class"/> </fileset> </batchtest> <batchtest todir="${test.dir}/data" unless="testcase"> <fileset dir="${test.dir}/@{module}/classes"> <include name="**/*Test.class*"/> </fileset> </batchtest> </junit> <!-- emma report task --> <!-- ================================== --> <emma enabled="${emma.enabled}" > <report sourcepathref="all.sources" depth="method" > <fileset dir="${coverage.dir}" > <include name="*.emma" /> </fileset> <html outfile="${coverage.dir}/coverage.html" /> </report> </emma> <fail if="test.failed"> Unit tests failed. For error messages, check the log files in ${test.dir}/data or run "ant test-reports" to generate reports at ${test.dir}/reports.</fail> </sequential> </macrodef>
|