简介
Ant 必须按照指定顺序执行以下步骤,才能使用 Jtest 分析您的项目:
- 注册 Parasoft·构建监听器。
- 编译项目。
- 运行 Jtest 任务。
运行静态分析
对代码执行静态分析的步骤:
- 确保完成 Maven 的 Jtest 插件设置(请参阅配置 Ant 的 Jtest 插件)。
- 确保您执行的目标中配置了 jtest 任务。
- 使用
-listener
选项将 Parasoft 监听器添加到您的命令行中,或者在您的目标中配置jtest:listener
任务。 使用 Ant 构建项目。您的命令行可能与以下内容类似:
ant -lib PATH/TO/jtest-ant-plugin.jar -listener com.parasoft.Listener myTarget
在上面的例子中,Ant 的 Jtest 插件被添加到命令行中,但您可以将 JAR 文件部署在 Ant 的 lib 目录中(请参阅初始设置)。
默认情况下会从分析中排除测试源。要分析测试代码,需禁用
excludeTestSources
选项;请参阅 Ant 的 Jtest 目标参考。
执行和收集单元测试的覆盖率
您可以通过使用 jtest 和 agent 任务,以及专用的 Unit Tests
内建测试配置,将单元测试结果包含在 Jtest 报告中:
- 确保完成 Maven 的 Jtest 插件设置(请参阅配置 Ant 的 Jtest 插件)。
- 确保您为运行测试而执行的目标配置了以下内容:
- jtest
- 由 Jtest agent 任务封装的 junit 任务
- 专用的Unit Tests
内建测试配置 - 使用
-listener
选项将 Parasoft 监听器添加到您的命令行中,或者在您的目标中配置jtest:listener
任务。 使用 Ant 构建项目。您的命令行类似于以下内容(
jtest.coverage.skip
选项允许您跳过覆盖率收集):ant -lib PATH/TO/jtest-ant-plugin.jar -listener com.parasoft.Listener buildTestAnalyze
默认情况下,Jtest 会收集执行测试的覆盖率数据。若要禁用覆盖率收集功能,则启用 jtest.coverage.skip
选项(详细信息,请参阅 Ant 的 Jtest 任务参考)。
关于 agent
任务
推荐通过 Java 代理来使用 Jtest 收集覆盖率数据。agent 任务必须在相应的目标中进行配置,该任务允许运行时字节码插桩(无需修改 .class 文件)。以下示例展示了在一个目标中配置所需任务的构建脚本:
<project name="agent-sample" default="buildTestAnalyze" xmlns:jtest="antlib:com.parasoft.jtest.plugin.ant"> <!-- sources directory containing both tests and application source code. Usually these sources are not placed in one directory. --> <property name="sources" value="src"/> <!-- classes directory --> <property name="classes" value="bin"/> <target name="buildTestAnalyze"> <!-- compiling sources --> <javac srcdir="${sources}" destdir="${classes}"/> <!-- instrumenting bytecode --> <!-- run tests --> <jtest:agent> <!-- Following attributes will be set: haltonerror="no" haltonfailure="no" fork="yes" If agent task skipped nested task will be executed without any config changes. --> <junit> <!-- Formatter element will be set as following: <formatter type="xml"/> If different formatter type has been set it will get overridden. If formatter has been configured by classname it will be left as it is. --> <classpath> <pathelement location="${classes}"/> </classpath> <batchtest> <fileset dir="${classes}" includes="**/*Test.class"/> </batchtest> </junit> <coverage> <includes> <fileset dir="${classes}" /> </includes> <testIncludes> <include>**/*Test.class</include> </testIncludes> </coverage> </jtest:agent> <!-- analysis --> <jtest:jtest/> </target> </project>
收集应用程序覆盖率
Jtest 的覆盖率代理允许在对运行的应用程序执行手动或自动测试期间收集覆盖率数据。有关使用 Jtest 收集应用程序覆盖率的信息,请参阅应用程序覆盖率。
禁用覆盖率数据收集
您可以通过以下方式之一禁用覆盖率收集:
- 设置
skip
参数,跳过覆盖率收集(不会禁用 Jtest 执行)。 - 使用以下
-D
选项运行 Ant:-Djtest.skip=true
- 配置以下项目属性:
<property name="jtest.skip" value="true"/>
(如果子项目中配置了 Jtest 任务,确保子项目继承此属性)。