使用Ant执行Junit实现自动化

阅读更多

单元测试 - JUnit+Ant自动化执行单元测试并生成报告 | How to Automated Unit Testing with JUnit and Ant

【转】:http://aofengblog.blog.163.com/blog/static/6317021201312734058296/

 

 JUnit是Java社区广泛使用的单元测试框架,使单元测试编写和执行变得非常容易,并且几乎所有的流行Java IDE(Eclipse, NetBeans)都集成了它。而JUnit结合Ant可以自动化执行一个项目所有的单元测试并输出单元测试报告。
    下面通过一个完整的脚本样例来说明如何编写Ant脚本执行一个项目的单元测试用例和输出单元测试报告。

一、定义源代码目录和编译输出目录和classpath等变量定义 | Variable Definitions

使用Ant执行Junit实现自动化_第1张图片

1、业务源代码目录(src.java.dir) ,单元测试源代码目录(src.test.dir)。
2、业务源代码编译后输出目录(target.java.dir),单元测试源代码编译后输出目录(target.unit-test.dir),Cobertura打点后的输出目录(target.cover-test.dir)。
3、第三方依赖库目录。
4、单元测试执行报告输出目录(target.unit-test.dir),单元测试覆盖率报告输出目录(target.cover-test-report.dir)。
5、业务源代码编译所需的classpath(app.classpath),单元测试源代码编译所需的classpath(app.test.classpath)。

二、编译业务源代码和单元测试源代码 | Compile Code

使用Ant执行Junit实现自动化_第2张图片

1、编译业务源代码。

2、编译单元测试源代码。

三、执行单元测试用例并生成单元测试报告 | Unit Test And Generate Report

使用Ant执行Junit实现自动化_第3张图片

1、批量执行单元测试,并且以xml格式输出每一个用例的执行结果。
标签配置属性说明:

  • printsummary - 为每一个测试用例通过System.out输出一行统计信息,如果出错或测试失败则通过System.err输出信息。
  • haltonerror - 执行单元测试出错时停止执行的后续用例。
  • haltonfailure - 执行单元测试失败时停止执行的后续用例。
  • fork - 在独立的VM中执行单元测试用例。

标签的配置属性说明:

  •  type - 单元测试用例执行结果输出格式。可选项有:plain, xml, brief 或 failure
  •  usefile - 单元测试用例执行结果是否输出至文件

标签的配置属性说明:

  • todir - 单元测试用例执行结果输出目录。


2、根据每个用例的执行结果文件Test-*.xml输出单元测试报告。
标签配置属性说明:

  • todir - 单元测试报告输出目录。

 

四、执行脚本并查看单元测试报告 | Execute Script And View Report

在命令行中输入: ant unit-test-report ,最终输出的单元测试报告类似如下:

使用Ant执行Junit实现自动化_第4张图片

 

附录:完整的Ant脚本build.xml样例

"1.0" encoding="UTF-8" ?>
"busimonitor" basedir=".">
    "src.java.dir" location="${basedir}/app" />
    "src.test.dir" location="${basedir}/test" />
    "target.dir" location="${basedir}/classes" />
    "target.java.dir" location="${target.dir}/java" />
    "target.unit-test.dir" location="${target.dir}/unit-test" />
    "target.cover-test.dir" location="${target.dir}/cover-test" />
    "src.extend.lib.dir" location="${basedir}/lib"/>
    "play.lib.dir" location="/devdata/projects/game/play-1.2.5/framework" />
    "target.report.dir" location="${basedir}/report" />
    "target.unit-test-report.dir" location="${target.report.dir}/unit-test" />
    "target.cover-test-report.dir" location="${target.report.dir}/cover-test" />
    "app.classpath">
        "${play.lib.dir}">
            "**/*.jar" />
        
        "${src.extend.lib.dir}">
            "*.jar" />
        
        "${target.java.dir}" />
        "${basedir}/conf" />
    
    "app.test.classpath">
        "${target.unit-test.dir}" />
    
    "compile.java">
        "${target.java.dir}" />
        "${src.java.dir}" destdir="${target.java.dir}" 
            debug="on" source="1.6" includeantruntime="on">
            "app.classpath">
        
    
    "compile.test" depends="compile.java">
        "${target.unit-test.dir}" />
        "${src.test.dir}" destdir="${target.unit-test.dir}" 
            debug="on" source="1.6" includeantruntime="on">
            "app.classpath">
            "app.test.classpath">
        
        "${target.unit-test.dir}">
            "${src.test.dir}">
                "**/*.properties" />
                "**/*.xml" />
            
        
    
    "compile" depends="compile.java, compile.test">
    "unit-test" depends="compile">
        "${target.unit-test-report.dir}" />
        "on" haltonerror="off" 
            haltonfailure="off" fork="on">
            "plain" usefile="off"/>
            "xml" usefile="on" />
            "${target.unit-test-report.dir}">
                "${target.unit-test.dir}">
                    "**/*Test.class"/>
                
            
            "app.classpath">
            "app.test.classpath">
        
    
    "unit-test-report" depends="unit-test">
        "${target.unit-test-report.dir}/html" />
        "${target.unit-test-report.dir}">
            "${target.unit-test-report.dir}">
                "TEST-*.xml" />
            
            "${target.unit-test-report.dir}/html" />
        
    

 

参考资料 | References

  • http://ant.apache.org/manual/Tasks/junit.html
  • http://ant.apache.org/manual/Tasks/junitreport.html



<正文结束>

你可能感兴趣的:(junit,ant,单元测试)