`

Java应用利器组合:Ant+JUnit+Cobertura

    博客分类:
  • j2ee
阅读更多
    看标题就知道,这个是开发一个Java应用的利器组合,使用Ant完成工程的构建(Build),使用JUnit完成单元测试,使用Cobertura完成代码覆盖测试,也可以辅助查找性能瓶颈和一些类型的BUG,下面是一个完整的build.xml范例,可以完全拿来用,不需任何修改,只要你的目录和这里的目录一致(应该也是很通用的):

下载下面的build.xml文件

文件内容:
<project default="all">
    <!– =================================================================== –>
    <!–                               Definitions                           –>
    <!– =================================================================== –>  
    <property name="base-dir" location="." />
    <property name="lib-dir" location="${base-dir}/lib" />
    <property name="src-dir" location="${base-dir}/src" />
    <property name="testcase-dir" location="${base-dir}/test" />
    <property name="out-dir" location="${base-dir}/classes" />
    <property name="report-dir" location="${base-dir}/report" />
    <property name="junit-dir" location="${report-dir}/junit" />
    <property name="junit-xml-dir" location="${junit-dir}/xml" />
    <property name="junit-html-dir" location="${junit-dir}/html" />
    <property name="cobertura-dir" location="${report-dir}/cobertura" />
    <property name="cobertura-xml-dir" location="${cobertura-dir}/xml" />
    <property name="cobertura-html-dir" location="${cobertura-dir}/html" />
    <property name="instrumented-dir" location="${report-dir}/instrumented" />
    <property name="instrument-file" location="${instrumented-dir}/cobertura.ser" />
    <property name="cobertura.dir" value="${instrumented-dir}" />
  
  
    <path id="classpath.all">
        <pathelement location="${out-dir}" />
        <fileset id="alljars" dir="${lib-dir}">
            <include name="**/*.jar" />
        </fileset>
    </path>

    <!– include the cobertura building jars –>
    <path id="cobertura.classpath">
        <path refid="classpath.all" />
    </path>  
  
    <!– define the cobertura property file –>
    <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>
  
    <!– =================================================================== –>
    <!–                            Project Targets                          –>
    <!– =================================================================== –>
  
    <target name="init" description="initialize the project env.">
        <!– create the output folder –>
        <mkdir dir="${out-dir}" />
        <mkdir dir="${report-dir}" />
        <copy todir="${out-dir}">
            <fileset dir="${src-dir}" includes="**/*.properties" />
        </copy>
    </target>

     <target name="compile" depends="init">
        <javac srcdir="${src-dir}" destdir="${out-dir}">
            <classpath refid="classpath.all" />
        </javac>
    </target>
 
    <!– =================================================================== –>
    <!–                            Unit Test Targets                        –>
    <!– =================================================================== –>
  
    <!– - - - - - - - - - - - - - - - - -
      target: init
      initialize the build env           
    - - - - - - - - - - - - - - - - - –>  
    <target name="init-test" description="initialize the test env.">
        <!– create the output folder –>
        <mkdir dir="${junit-dir}" />
        <mkdir dir="${junit-xml-dir}" />
        <mkdir dir="${junit-html-dir}" />
    </target>

    <!– - - - - - - - - - - - - - - - - -
      target: compile-test
      compile the test cases               
    - - - - - - - - - - - - - - - - - –>   
    <target name="compile-test" depends="compile">
        <javac srcdir="${testcase-dir}" destdir="${out-dir}">     
            <classpath refid="classpath.all" />
        </javac>
    </target>

    <!– =================================
      target: test
      run the unit test
     ================================= –>  
    <target name="test" depends="init-test">
        <junit fork="yes" printsummary="on" maxmemory="100m">
            <sysproperty key="net.sourceforge.cobertura.datafile"
                file="${instrument-file}" />

            <classpath location="${instrumented-dir}" />
            <classpath refid="cobertura.classpath" />
                 
            <formatter type="xml" />
            <batchtest todir="${junit-xml-dir}">
                <fileset dir="${out-dir}">
                    <include name="**/Test*.class" />
                    <exclude name="**/*$*.class" />
                </fileset>
            </batchtest>
        </junit>
        <junitreport todir="${junit-xml-dir}">
            <fileset dir="${junit-xml-dir}">
                <include name="TEST-*.xml" />
            </fileset>
            <report format="frames" todir="${junit-html-dir}" />
        </junitreport>
    </target>
  
    <!– =================================================================== –>
    <!–                      Code Coverage Targets                          –>
    <!– =================================================================== –>

<!– - - - - - - - - - - - - - - - - -
      target: init
      initialize the build env. for code coverage                    
    - - - - - - - - - - - - - - - - - –>  
    <target name="init-coverage" description="initialize the build env.">
        <!– create the output folder –>
        <mkdir dir="${instrumented-dir}" />
        <mkdir dir="${cobertura-dir}" />
        <mkdir dir="${cobertura-xml-dir}" />
        <mkdir dir="${cobertura-html-dir}" />
    </target>
  
    <target name="compile-coverage" depends="init">
        <javac srcdir="${src-dir}:${testcase-dir}" destdir="${out-dir}" debug="true" >
            <classpath refid="cobertura.classpath" />
        </javac>
    </target>

    <!– =================================
      target: instrument
      Instrument into the class files, but
      exclude test classes
     ================================= –>   
    <target name="instrument" depends="init-coverage,compile-coverage" description="instrument into the class files">
        <!–
          Instrument the application classes, writing the
          instrumented classes into ${instrumented.dir}.
        –>
        <cobertura-instrument todir="${instrumented-dir}" datafile="${instrument-file}">
            <!–
                The following line causes instrument to ignore any
                source line containing a reference to log4j, for the
                purposes of coverage reporting.
            –>
            <ignore regex="org.apache.log4j.*" />
            <fileset dir="${out-dir}">
                <!–
                  Instrument all the application classes, but
                  don’t instrument the test classes.
                –>
                <include name="**/*.class" />
                <exclude name="**/Test*.class" />
            </fileset>
        </cobertura-instrument>
    </target>      
  
    <!– =================================
      target: coverage-check
      check the code coverage by given rates.
     ================================= –>
    <target name="coverage-check" description="check the code coverage by given rates">
      <cobertura-check branchrate="34" totallinerate="100" />
    </target>
  
    <!– =================================
      target: coverage-report-xml
      generate code coverage report by xml format
     ================================= –>    
    <target name="coverage-report-xml" description="generate xml report">
      <!– Generate an XML file containing the coverage data using the "srcdir" attribute. –>
      <cobertura-report srcdir="${src-dir}" destdir="${cobertura-xml-dir}" format="xml" datafile="${instrument-file}"/>
    </target>
  
    <!– =================================
      target: coverage-report-html
      generate code coverage report by html format
     ================================= –>  
    <target name="coverage-report-html">
    <!–
        Generate a series of HTML files containing the coverage
        data in a user-readable form using nested source filesets.
    –>
      <cobertura-report destdir="${cobertura-html-dir}" datafile="${instrument-file}">
        <fileset dir="${src-dir}">
          <include name="**/*.java"/>
        </fileset>
      </cobertura-report>
    </target>
  
    <!– run the code coverage individual –>
    <target name="coverage" depends="compile-coverage,instrument,test,coverage-report-html"
        description="Compile, instrument ourself, run the tests and generate JUnit and code coverage reports."/>
  
    <!– =================================================================== –>
    <!–                           Public Targets                            –>
    <!– =================================================================== –>
  
    <target name="clean">
        <delete quiet="true" includeEmptyDirs="true">
            <fileset dir="${report-dir}">
                <exclude name=".cvsignore" />
                <exclude name="CVS" />
            </fileset>
            <fileset dir="${out-dir}">
            </fileset>
        </delete>
    </target>
  
  
    <!– =================================================================== –>
    <!–                           Global Targets                            –>
    <!– =================================================================== –>
  
    <target name="all" depends="compile" />
  
    <target name="junit" depends="clean, compile-test, test" />

    <target name="full" depends="clean, coverage" />

</project>

作者: Cherami
原载: Ant+JUnit+Cobertura
分享到:
评论

相关推荐

    Junit+ant+cobertura示例

    总的来说,"Junit+ant+cobertura示例"是一个展示如何使用JUnit进行单元测试,通过Ant进行自动化构建,并利用Cobertura进行代码覆盖率分析的实践案例。这样的组合可以帮助开发者更高效地管理和提升代码质量,确保软件...

    ant+junit教程

    在Java开发过程中,Ant和JUnit是两个非常重要的工具。Ant是一个构建工具,它允许开发者自动化构建、测试和部署Java项目,而JUnit则是一个单元测试框架,用于编写和运行可重复的测试用例,确保代码质量。这个“ant+...

    SpringBoot第 3 讲:SpringBoot+Junit+Log4J

    SpringBoot简化了Java应用的开发流程,而JUnit是广泛使用的单元测试工具,Log4J则是一款强大的日志记录框架。让我们一起了解如何在实际开发中有效地利用这些技术。 1. **SpringBoot简介**: SpringBoot是由Pivotal...

    Ant+Junit+SVN的安装过程

    在本文中,我们将详细介绍如何配置Ant、JUnit和SVN,这三个工具在Java开发中的重要性以及它们的安装过程。 首先,Ant是一个基于Java和XML的构建工具,它的主要功能是管理和自动化项目的构建过程。Ant通过一个名为...

    Ant+Junit+Svn实现自动单元测试

    【Ant+JUnit+Svn实现自动单元测试】 Ant是一种流行的Java构建工具,它使用XML格式的构建文件(build.xml)来定义一系列的任务,如编译、打包、测试等,以自动化软件开发过程。Ant的主要优点是它的灵活性和可扩展性...

    Ant+JUnit测试报告实际例子

    `Ant` 是一个流行的 Java 构建工具,它允许开发者自动化编译、打包、测试等任务。`JUnit` 则是 Java 平台上的一个单元测试框架,用于编写和执行可重复的测试用例。在这个"Ant+JUnit测试报告实际例子"中,我们将深入...

    终极自动化测试环境搭建:Selenium+Eclipse+Junit+TestNG+Python

    终极自动化测试环境搭建:Selenium+Eclipse+Junit+TestNG+Python。

    ant+junit程序小实例(绝对可以运行)

    在Java开发过程中,构建工具和...这个实例为你提供了一个实际操作的环境,你可以通过修改`build.xml`文件和测试类,进一步了解Ant和JUnit的用法,以及它们在实际项目中的应用。这将有助于提升你的Java开发和测试技能。

    Eclipse下Ant+Junit构建文件

    本话题将深入探讨如何在Eclipse集成开发环境中利用Ant和JUnit进行项目构建与测试,以提升开发效率和代码质量。 首先,Eclipse是一款广泛使用的Java IDE,它提供了丰富的功能来支持开发人员进行代码编写、调试和项目...

    junit5.rar包含JUnit Platform + JUnit Jupiter + JUnit Vintage依赖jar包

    JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage,包含依赖包:junit-jupiter-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-jupiter-params-5.5.1.jar,junit-platform-launcher-1.5.1.jar,junit-...

    hibernate+spring +ant+junit

    总结来说,这个项目展示了Java开发中常见的一套技术组合,通过Hibernate和Spring进行数据层和业务层的交互,使用Ant进行构建自动化,利用JUnit保证代码质量,而C标签则提供了用户友好的前端分页体验。这样的组合在...

    ant-junit-1.6.5.jar.zip

    在Java开发领域,Ant和JUnit是两个不可或缺的工具。Ant是一种基于Java的构建工具,用于自动化项目构建过程,如编译、打包、测试等任务。JUnit则是Java编程语言中最流行的单元测试框架,它使得开发者可以方便地编写和...

    hibernate+spring+junit+ant+mysql

    标题中的“hibernate+spring+junit+ant+mysql”是一个经典的Java开发组合,它涵盖了五个重要的技术领域:Hibernate作为对象关系映射框架,Spring作为全面的轻量级框架,JUnit用于单元测试,Ant作为构建工具,以及...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    1.4.2 JSP(Java服务页面) 1.4.3 EJB(企业JavaBean) 1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) ...

    Maven2.Ant.Junit合集

    《Maven2.Ant.Junit合集》是一个包含多种IT工具和框架的资源包,主要聚焦于Java开发中的构建管理和单元测试。这个合集提供了PDF和CHM两种格式的文档,便于不同用户根据个人喜好进行阅读。以下是这些工具及其重要知识...

Global site tag (gtag.js) - Google Analytics