首先要得到之前的单元测试和集成测试的覆盖率文件,还有对应的class文件以及单元测试的覆盖率报告,材料准备齐全之后,使用如下命令:

build.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
        <classpath path="${env.SONAR-ANT-TASK.JAR}"/>
    </taskdef>

    <target name="sonar">
        <sonar:sonar key="${sonar.project.key}" version="${sonar.project.version}" xmlns:sonar="antlib:org.sonar.ant">
            <sources>
                <path location="${src.dir}" />
            </sources>

            <property key="sonar.projectName" value="jacoco_demo" />
            <property key="sonar.sourceEncoding" value="UTF-8" />
            <property key="sonar.dynamicAnalysis" value="reuseReports" />
            <property key="sonar.surefire.reportsPath" value="${junit.dir}" />
            <property key="sonar.core.codeCoveragePlugin" value="jacoco" />
            <property key="sonar.jacoco.reportPath" value="${basedir}/ut.exec" />
            <property key="sonar.jacoco.itReportPath" value="${basedir}/uat.exec" />

            <tests>
                <path location="${src.test.dir}" />
            </tests>

            <binaries>
                <path location="${build.src.class}" />
                <path location="${build.test.class}" />
            </binaries>

            <libraries>
                <path location="${build.lib.dir}" />
            </libraries>
        </sonar:sonar>
    </target>

参数解释:

  • sonar.dynamicAnalysis是指单元测试报告的生成方式,值为reuseReports是指给出生成好的单元测试报告路径。
  • sonar.surefire.reportsPath是指单元测试报告的路径。
  • sonar.core.codeCoveragePlugin是覆盖率插件,有jacoco,cobetura等。
  • sonar.jacoco.reportPath是单元测试覆盖率文件的路径。
  • sonar.jacoco.itReportPath是集成测试覆盖率文件的路径。

更多参数可以参考这里:单元测试集成测试
在sonar 3.3的版本会自动将单元测试和集成测试的覆盖率合并,最后附上sonar上的覆盖率显示:


posted on 2013-09-14 20:20  kingzzm  阅读(2279)  评论(0编辑  收藏  举报