【问题标题】:Running JUnits Via Ant, and Trying to Configure Cobertura Code Coverage In Jenkins.通过 Ant 运行 JUnit,并尝试在 Jenkins 中配置 Cobertura 代码覆盖率。
【发布时间】:2012-12-19 09:51:11
【问题描述】:

所以我在 Eclipse 中有一个 java 项目。我通过ant构建war文件。我可以从 Eclipse、命令行或 Jenkins 调用它。我正在设置环境的方式是尝试并保持所有这三种构建方式的工作,并尽可能少地改变环境来实现它。

所以我目前正在通过我的 ant build.xml 进行编译、创建战争、生成 javadoc 和运行 junit

尝试添加 Cobertura 代码覆盖率。

我已经为 Cobertura 安装了 Jenkins,现在我正在尝试让 junit 运行以与 Cobertura 一起正确检测类并生成覆盖文件。

cobertura 文档说首先定义任务如下。

<property name="cobertura.dir" value="C:/javastuff/cobertura" />

<path id="cobertura.classpath">
    <fileset dir="${cobertura.dir}">
        <include name="cobertura.jar" />
        <include name="lib/**/*.jar" />
    </fileset>
</path>

<taskdef classpathref="cobertura.classpath" resource="tasks.properties" />

显然不喜欢那个 C:\ ...我需要一个有效的 cobertura.dir ...但如何配置它并不是很明显。 Jenkins 将插件的所有类都放在这里

.jenkins/plugins/cobertura

而这下面的文件结构如下。

drwxrwxr-x 2 vpbuild vpbuild 4096 Jan 4 10:42 图像 drwxrwxr-x 3 vpbuild vpbuild 4096 12 月 15 日 12:36 META-INF -rw-rw-r-- 1 vpbuild vpbuild 0 Jan 4 10:41 .timestamp drwxrwxr-x 4 vpbuild vpbuild 4096 Dec 15 12:36 WEB-INF

因此,如果这是我的 cobertura.dir,则此处没有定义 lib 子目录。 WEB-INF 里有,但是那里没有 cobertura 罐子……所以看起来都不对。

我还单独下载了 cobertura jar,并将其放在 ANT_HOME/lib 中,希望有助于使 cobertura 任务对 ANT 更可见,但不确定这将如何影响我在构建时需要做的事情.xml。

任何人有任何配置 cobertura 的经验,以便它可以通过 ant 以这种方式在 jenkins 内部和外部运行? build.xml 需要是什么样子才能实现它?

-吉姆

【问题讨论】:

    标签: eclipse ant junit jenkins cobertura


    【解决方案1】:

    Jenkins Cobertura 插件仅处理和显示您的代码覆盖率结果;它不包括 Cobertura 工具本身。

    您应该下载latest Cobertura binaries 并将它们解压缩到您的C:\javastuff\cobertura 目录中。然后,您将拥有 cobertura.jar 和一个 lib 子目录,其中包含进入 cobertura.classpath 的其他必需依赖项。

    【讨论】:

    • 好的,知道插件不是工具很有帮助。哈哈。我也下载了jar文件。我将能够配置 ant 来轻松查看它。然而,二进制文件中没有 lib 目录,所以我不确定该条目的全部内容。
    • 如果您从我在答案中提供的链接下载其中一种二进制包格式并解压缩,您会找到一个 lib 子目录和一个示例子目录。
    • 已下载二进制文件 ... 将内容放入 .jenkins/tools/Cobertura ... 使用该目录和子目录创建 cobertura 类路径 ... 添加“仪器”任务,如例如 build.xml ...当我调用仪器目标时,我在 log4j.logger 上收到 NoClassDefFound 错误 ...尝试将类路径元素添加到 cobertura 仪器无济于事....
    • 修复了 ... 需要删除我之前放在 ANT_HOME/lib 中的 cobertura jar .... 搞砸了...在这里找到了解决方案 stackoverflow.com/questions/1774889/…
    猜你喜欢
    • 2013-01-19
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    相关资源
    最近更新 更多