Hi all

I have problem when using cobertura with cactus. I run the test and flush
the result fine. Here is the output log of Weblogic Server:
*Flushing results...*
*Flushing results done*
*Cobertura: Loaded information on 23 classes.*
*Cobertura: Saved information on 23 classes.*
*Flushing results...*
*Flushing results done*
*Cobertura: Loaded information on 23 classes.*
*Cobertura: Saved information on 23 classes.*
*Query is null*
*Total size is 88*
*First result is 0*
*maxRows is 25*
*result size is 25*
*Flushing results...*
*Flushing results done*
*Cobertura: Loaded information on 23 classes.*
*Cobertura: Saved information on 23 classes.*
*Query is null*
*Total size is 10*
*First result is 0*
*maxRows is 25*
*result size is 10*
*Flushing results...*
*Flushing results done*
*Cobertura: Loaded information on 23 classes.*
*Cobertura: Saved information on 23 classes.*
*
*
So the result is flushed but when the coverage report is generated, I always
get 0% coverage. And according to the Cobertura FAQ, there will be
cobertura.ser file in the working directory of server(WLHOME/server/bin) but
I can't find it there. ( I add the code from FAQ to tearDown() methods of
test cases so that server need not to shutdown to flush the result:

try {
    String className = "net.sourceforge.cobertura.coveragedata.ProjectData";
    String methodName = "saveGlobalProjectData";
    Class saveClass = Class.forName(className);
    java.lang.reflect.Method saveMethod =
saveClass.getDeclaredMethod(methodName, new Class[0]);
    saveMethod.invoke(null,new Object[0]);
} catch (Throwable t) {
}


)


Any suggestion? What did I do wrong?

Here is part of my build.xml file:


<target name="intrument-classes-for-coverage-testing"
depends="move-toplink-files-to-deployment-folder, compile-gems" >
<echo message="--instrumenting classes--" />
<!-- delete the cobertura file which contain the info of instrumented
classes -->
<delete file="${basedir}/cobertura.ser" />
<cobertura-instrument >
    <fileset dir="${classes.dir}">
        <include name="**" />
    </fileset>
</cobertura-instrument>
<!-- generated cobertura.ser is at base by default -->
</target>

...
<target name="package-gems-ejb"
depends="intrument-classes-for-coverage-testing" description="compiles and
packages the gems ejb jar file">
    <echo message="--- Packaging gems ejb ---"></echo>
    <delete file="${gems.ejb.file}"/>
    <jar destfile="${gems.ejb.file}">
  <fileset dir="${classes.dir}">
        <include name="**"/>
      </fileset>
      <fileset dir="${gems.base.dir}">
        <include name="toplink\DAPS\descriptors\*.xml"/>
      </fileset>
      <metainf dir="${gems.source.dir}/META-INF">
        <include name="*.xml"/>
      </metainf>
      <manifest>
        <attribute name="Class-Path" value="${search.jar.file.name}
commons-logging.jar cobertura.jar" />
      </manifest>
    </jar>
  </target>

<target name="package-gems-ear-for-apps-server"  description="compiles and
packages the ear file, "
    depends="package-gems-ejb">
    <echo message="${gems.ear.file}" />
    <delete file="${gems.ear.file}"/>

    <ear destfile="${gems.ear.file}"
appxml="${gems.config.dir}/META-INF/application.xml">
      <fileset dir="${deployment.dir}">
        <include name="${gems.ejb.file.name}"/>
        <include name="${search.jar.file.name}"/>
      </fileset>
      <fileset dir="${buildlib.dir}">
        <include name="commons-logging.jar" />
      </fileset>
      <fileset dir="${cobertura.dir}" >
      <include name="cobertura.jar" />

      </fileset>
      <metainf dir="${gems.config.dir}/META-INF">
        <include name="weblogic-application.xml"/>

      </metainf>

    </ear>
  </target>

<target name="cactify-gems-ear-file"
depends="package-war-file-for-gems-test-cases">
<echo message="--Cactifying ear file--" />
<cactifyear srcfile="${gems.ear.file}"
destfile="${gems.cactified.ear.file}">
       <cactuswar srcfile="${gems.cactus.test.war.file}"
context="DapsWS-DataModel-context-root" />

</cactifyear>
</target>

<!-- deploy to gems-ear to application server -->
<target name="deploy-cactified-gems-ear-to-app-server"
depends="cactify-gems-ear-file">
<echo message="--Deploying to app server--" />

<wldeploy
      action="deploy" verbose="true" debug="true"
      name="GEMS" source="${gems.cactified.ear.file}"
      user="weblogic" password="weblogic1"
      adminurl="t3://localhost:7101" targets="DefaultServer"  />
</target>
<target name="move-cactus.properties"
depends="deploy-cactified-gems-ear-to-app-server">
<echo message="Moving" />
<copy todir="${deployment.dir}/classes" >
        <fileset dir="${gems.base.dir}/classes">
              <include name="cactus.properties" />
        </fileset>
</copy>
</target>

<target name="run-with-junit" depends="move-cactus.properties">
<junit printsummary="false" fork="yes" forkmode="once"  >

  <sysproperty key="net.sourceforge.cobertura.datafile"
 file="${basedir}/cobertura.ser" />
  <formatter type="brief" usefile="false" />
 <formatter type="xml" />

 <classpath location="${classes.dir}" />
 <classpath location="${test.classes.dir}" />
 <classpath refid="cactus.classpath" />
 <classpath refid="buildlib" />
 <classpath refid="testlib" />
 <classpath refid="cobertura.classpath" />
  <test name="packagename.TestClass"  todir="${test.report.dir}">
 </test>
  </junit>

 </target>


<target name="generate-coverage-report">
 <cobertura-report format="html" destdir="${coverage.report.dir}"
srcdir="${gems.source.dir}" datafile="${basedir}/cobertura.ser" />
</target>

Thank you very much.

Reply via email to