使用cobertura确定测试代码的覆盖率
2010-02-08 10:55
567 查看
这是某个美国大学的副教授写的关于cobertura来确定测试代码覆盖率的文章讲的很清楚,我就不偷了~直接把链接放在这里
http://www.ibm.com/developerworks/cn/java/j-cobertura/
这个是一个网友写的,可以配置IDE开发环境的
http://www.blogjava.net/xmatthew/archive/2008/11/25/242658.html
这是网友写的,个人觉得对配置很有指导意义:
build.XML
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <project name="cobertura.examples.basic" default="coverage" basedir=".">
4
5 <!-- 引用 build.properties文件 配置路径信息-->
6 <property file="build.properties" />
7
8 <!-- 设置 cobertura路径 -->
9 <path id="cobertura.classpath">
10 <fileset dir="${cobertura.dir}">
11 <include name="cobertura.jar" />
12 <include name="lib/**/*.jar" />
13 </fileset>
14 </path>
15
16 <!-- 配置 cobatura ant 扩展任务 -->
17 <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>
18
19 <target name="init">
20 <mkdir dir="${classes.dir}" />
21 <mkdir dir="${instrumented.dir}" />
22 <mkdir dir="${reports.xml.dir}" />
23 <mkdir dir="${reports.html.dir}" />
24 <mkdir dir="${coverage.xml.dir}" />
25 <mkdir dir="${coverage.html.dir}" />
26 </target>
27
28 <!-- 编译源代码 -->
29 <target name="compile" depends="init">
30 <javac srcdir="${src.dir}:${test.dir}:${src.conf.dir}:${test.conf.dir}" destdir="${classes.dir}" debug="yes">
31 <classpath refid="cobertura.classpath" />
32 </javac>
33 </target>
34
35 <target name="instrument" depends="init,compile">
36 <!--
37 Remove the coverage data file and any old instrumentation.
38 -->
39 <delete file="cobertura.ser"/>
40 <delete dir="${instrumented.dir}" />
41
42 <!--
43 Instrument the application classes, writing the
44 instrumented classes into ${build.instrumented.dir}.
45 -->
46 <cobertura-instrument todir="${instrumented.dir}">
47 <!--
48 The following line causes instrument to ignore any
49 source line containing a reference to log4j, for the
50 purposes of coverage reporting.
51 -->
52 <ignore regex="org.apache.log4j.*" />
53
54 <fileset dir="${classes.dir}">
55 <!--
56 Instrument all the application classes, but
57 don't instrument the test classes.
58 -->
59 <include name="**/*.class" />
60 <exclude name="**/*Test.class" />
61 </fileset>
62 </cobertura-instrument>
63 </target>
64
65 <!-- 单元测试 -->
66 <target name="test" depends="init,compile">
67 <junit fork="yes" dir="${basedir}" failureProperty="test.failed">
68 <!--
69 Note the classpath order: instrumented classes are before the
70 original (uninstrumented) classes. This is important.
71 -->
72 <classpath location="${instrumented.dir}" />
73 <classpath location="${classes.dir}" />
74
75 <!--
76 The instrumented classes reference classes used by the
77 Cobertura runtime, so Cobertura and its dependencies
78 must be on your classpath.
79 -->
80 <classpath refid="cobertura.classpath" />
81
82 <formatter type="xml" />
83 <test name="${testcase}" todir="${reports.xml.dir}" if="testcase" />
84 <batchtest todir="${reports.xml.dir}" unless="testcase">
85 <fileset dir="${test.dir}">
86 <include name="**/*Test.java" />
87 </fileset>
88 <fileset dir="${src.dir}">
89 <include name="**/*Test.java" />
90 </fileset>
91 </batchtest>
92 </junit>
93
94 <junitreport todir="${reports.xml.dir}">
95 <fileset dir="${reports.xml.dir}">
96 <include name="TEST-*.xml" />
97 </fileset>
98 <report format="frames" todir="${reports.html.dir}" />
99 </junitreport>
100 </target>
101
102 <target name="coverage-check">
103 <cobertura-check branchrate="34" totallinerate="100" />
104 </target>
105
106 <!-- 生成 coverage xml格式报告 -->
107 <target name="coverage-report">
108 <!--
109 Generate an XML file containing the coverage data using
110 the "srcdir" attribute.
111 -->
112 <cobertura-report srcdir="${src.dir}" destdir="${coverage.xml.dir}" format="xml" />
113 </target>
114
115 <!-- 生成 coverage html格式报告 -->
116 <target name="alternate-coverage-report">
117 <!--
118 Generate a series of HTML files containing the coverage
119 data in a user-readable form using nested source filesets.
120 -->
121 <cobertura-report destdir="${coverage.html.dir}">
122 <fileset dir="${src.dir}">
123 <include name="**/*.java"/>
124 </fileset>
125 </cobertura-report>
126 </target>
127
128 <target name="clean" description="Remove all files created by the build/test process.">
129 <delete dir="${classes.dir}" />
130 <delete dir="${instrumented.dir}" />
131 <delete dir="${reports.dir}" />
132 <delete file="cobertura.log" />
133 <delete file="cobertura.ser" />
134 </target>
135
136 <target name="coverage" depends="compile,instrument,test,coverage-report,alternate-coverage-report" description="Compile, instrument ourself, run the tests and generate JUnit and coverage reports."/>
137
138 </project>
139
build.properties
1 # The source code for the examples can be found in this directory
2 src.dir=../src/java
3 src.conf.dir=../src/conf
4 test.dir=../test/java
5 test.conf.dir=../src/conf
6
7 # The path to cobertura.jar
8 cobertura.dir=cobertura
9
10 # Classes generated by the javac compiler are deposited in this directory
11 classes.dir=../bin
12
13 # Instrumented classes are deposited into this directory
14 instrumented.dir=instrumented
15
16 # All reports go into this directory
17 reports.dir=reports
18
19 # Unit test reports from JUnit are deposited into this directory
20 reports.xml.dir=${reports.dir}/junit-xml
21 reports.html.dir=${reports.dir}/junit-html
22
23 # Coverage reports are deposited into these directories
24 coverage.xml.dir=${reports.dir}/cobertura-xml
25 coverage.html.dir=${reports.dir}/cobertura-html
26
把出处放在这里,还是看原版的好:http://huangtut.javaeye.com/blog/297464
http://www.ibm.com/developerworks/cn/java/j-cobertura/
这个是一个网友写的,可以配置IDE开发环境的
http://www.blogjava.net/xmatthew/archive/2008/11/25/242658.html
这是网友写的,个人觉得对配置很有指导意义:
build.XML
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <project name="cobertura.examples.basic" default="coverage" basedir=".">
4
5 <!-- 引用 build.properties文件 配置路径信息-->
6 <property file="build.properties" />
7
8 <!-- 设置 cobertura路径 -->
9 <path id="cobertura.classpath">
10 <fileset dir="${cobertura.dir}">
11 <include name="cobertura.jar" />
12 <include name="lib/**/*.jar" />
13 </fileset>
14 </path>
15
16 <!-- 配置 cobatura ant 扩展任务 -->
17 <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>
18
19 <target name="init">
20 <mkdir dir="${classes.dir}" />
21 <mkdir dir="${instrumented.dir}" />
22 <mkdir dir="${reports.xml.dir}" />
23 <mkdir dir="${reports.html.dir}" />
24 <mkdir dir="${coverage.xml.dir}" />
25 <mkdir dir="${coverage.html.dir}" />
26 </target>
27
28 <!-- 编译源代码 -->
29 <target name="compile" depends="init">
30 <javac srcdir="${src.dir}:${test.dir}:${src.conf.dir}:${test.conf.dir}" destdir="${classes.dir}" debug="yes">
31 <classpath refid="cobertura.classpath" />
32 </javac>
33 </target>
34
35 <target name="instrument" depends="init,compile">
36 <!--
37 Remove the coverage data file and any old instrumentation.
38 -->
39 <delete file="cobertura.ser"/>
40 <delete dir="${instrumented.dir}" />
41
42 <!--
43 Instrument the application classes, writing the
44 instrumented classes into ${build.instrumented.dir}.
45 -->
46 <cobertura-instrument todir="${instrumented.dir}">
47 <!--
48 The following line causes instrument to ignore any
49 source line containing a reference to log4j, for the
50 purposes of coverage reporting.
51 -->
52 <ignore regex="org.apache.log4j.*" />
53
54 <fileset dir="${classes.dir}">
55 <!--
56 Instrument all the application classes, but
57 don't instrument the test classes.
58 -->
59 <include name="**/*.class" />
60 <exclude name="**/*Test.class" />
61 </fileset>
62 </cobertura-instrument>
63 </target>
64
65 <!-- 单元测试 -->
66 <target name="test" depends="init,compile">
67 <junit fork="yes" dir="${basedir}" failureProperty="test.failed">
68 <!--
69 Note the classpath order: instrumented classes are before the
70 original (uninstrumented) classes. This is important.
71 -->
72 <classpath location="${instrumented.dir}" />
73 <classpath location="${classes.dir}" />
74
75 <!--
76 The instrumented classes reference classes used by the
77 Cobertura runtime, so Cobertura and its dependencies
78 must be on your classpath.
79 -->
80 <classpath refid="cobertura.classpath" />
81
82 <formatter type="xml" />
83 <test name="${testcase}" todir="${reports.xml.dir}" if="testcase" />
84 <batchtest todir="${reports.xml.dir}" unless="testcase">
85 <fileset dir="${test.dir}">
86 <include name="**/*Test.java" />
87 </fileset>
88 <fileset dir="${src.dir}">
89 <include name="**/*Test.java" />
90 </fileset>
91 </batchtest>
92 </junit>
93
94 <junitreport todir="${reports.xml.dir}">
95 <fileset dir="${reports.xml.dir}">
96 <include name="TEST-*.xml" />
97 </fileset>
98 <report format="frames" todir="${reports.html.dir}" />
99 </junitreport>
100 </target>
101
102 <target name="coverage-check">
103 <cobertura-check branchrate="34" totallinerate="100" />
104 </target>
105
106 <!-- 生成 coverage xml格式报告 -->
107 <target name="coverage-report">
108 <!--
109 Generate an XML file containing the coverage data using
110 the "srcdir" attribute.
111 -->
112 <cobertura-report srcdir="${src.dir}" destdir="${coverage.xml.dir}" format="xml" />
113 </target>
114
115 <!-- 生成 coverage html格式报告 -->
116 <target name="alternate-coverage-report">
117 <!--
118 Generate a series of HTML files containing the coverage
119 data in a user-readable form using nested source filesets.
120 -->
121 <cobertura-report destdir="${coverage.html.dir}">
122 <fileset dir="${src.dir}">
123 <include name="**/*.java"/>
124 </fileset>
125 </cobertura-report>
126 </target>
127
128 <target name="clean" description="Remove all files created by the build/test process.">
129 <delete dir="${classes.dir}" />
130 <delete dir="${instrumented.dir}" />
131 <delete dir="${reports.dir}" />
132 <delete file="cobertura.log" />
133 <delete file="cobertura.ser" />
134 </target>
135
136 <target name="coverage" depends="compile,instrument,test,coverage-report,alternate-coverage-report" description="Compile, instrument ourself, run the tests and generate JUnit and coverage reports."/>
137
138 </project>
139
build.properties
1 # The source code for the examples can be found in this directory
2 src.dir=../src/java
3 src.conf.dir=../src/conf
4 test.dir=../test/java
5 test.conf.dir=../src/conf
6
7 # The path to cobertura.jar
8 cobertura.dir=cobertura
9
10 # Classes generated by the javac compiler are deposited in this directory
11 classes.dir=../bin
12
13 # Instrumented classes are deposited into this directory
14 instrumented.dir=instrumented
15
16 # All reports go into this directory
17 reports.dir=reports
18
19 # Unit test reports from JUnit are deposited into this directory
20 reports.xml.dir=${reports.dir}/junit-xml
21 reports.html.dir=${reports.dir}/junit-html
22
23 # Coverage reports are deposited into these directories
24 coverage.xml.dir=${reports.dir}/cobertura-xml
25 coverage.html.dir=${reports.dir}/cobertura-html
26
把出处放在这里,还是看原版的好:http://huangtut.javaeye.com/blog/297464
相关文章推荐
- [Java测试]使用Cobertura度量代码覆盖率
- ant中使用cobertura分析测试用例的代码覆盖率
- cobertura代码测试覆盖率使用案例
- 代码测试覆盖率Cobertura使用
- [Java测试]使用Cobertura度量代码覆盖率
- 使用Cobertura做代码覆盖率测试
- ant中使用cobertura分析测试用例的代码覆盖率
- 使用Cobertura的命令行方式测试代码覆盖率
- java里 使用apache-ant和cobertura测试代码覆盖率 环境变量配置
- 测试代码覆盖率-GCOV的使用
- 代码测试覆盖率检查工具-Cobertura
- 使用 Cobertura 和反射机制提高 Java 单元测试中的代码覆盖率
- IBM技术论坛:使用 Cobertura 和反射机制提高单元测试中的代码覆盖率
- 使用Rational PureCoverage测试代码覆盖率
- VS社区版 使用 OpenCover 获取测试代码覆盖率
- Android UI测试框架Espresso以及代码覆盖率jacoco的使用
- [Android]使用Emma进行单体测试代码覆盖率分析
- 使用Cobertura统计JUnit测试覆盖率
- 使用代码覆盖率分析度量测试的完整性
- 使用maven-clover2-plugin测试代码覆盖率