【问题标题】:How do I configure maven-cobertura-plugin to instrument a dependency jar如何配置 maven-cobertura-plugin 以检测依赖项 jar
【发布时间】:2012-02-12 11:28:05
【问题描述】:

我有两个模块的课程。其中一个模块包含一些集成测试,这些测试执行来自另一个模块的一些类。我希望我的覆盖率报告包含两个模块中的类,但我不知道如何配置 cobertura 插件,以便它将检测另一个模块的 jar 文件。

【问题讨论】:

    标签: maven cobertura


    【解决方案1】:

    我认为这是不可能的:项目 A 的单元测试指标应该在不执行项目 B 的任何内容的情况下自行完成。单元测试应该以完全覆盖代码的方式编写。但是,您可以考虑在 A 和 B 之间重用测试代码(参见 test-jar 目标 maven-jar-plugin)。

    【讨论】:

    • 感谢您的回复。这些不是单元测试,它们是端到端的系统测试。他们没有正当理由不应该在另一个项目中执行代码。但它看起来不像 maven 插件使这成为可能。
    • 是的,这些是集成测试。集成测试通常形成一个单独的项目(例如 T),在构建所有项目(例如 A、B)之后“运行”,所有单元测试运行并且显然所有统计信息都已创建。更何况 Hudson 已经归档了工件和统计数据。现在你想要从项目 T 中的cobertura 得到的东西是回到项目 A 并以某种方式更改数据。这不可能。如果可能的话,A 的统计数据将根据天气 T 是否运行而有所不同。
    • 我想你可能误解了我想要做什么。我不是在寻找项目 T 来更改项目 A 中的测试产生的统计数据。我在项目 T 中有测试项目 A 中的课程,我想看看这些测试产生了多少覆盖率。我只需要对项目 A 的 jar 文件在项目 T 的类路径上进行检测即可。项目 T 的报告独立于项目 A 生成的报告。
    • 现在我明白你需要什么了。您需要对项目 A 中的类进行检测并将其包含在 T 的测试报告中。从这个意义上说,我的回答是不正确的,我同意。我认为从技术上讲这是可能的,但是cobertura 无法访问源代码,但它可以为这些类生成指标……您需要的是一种包或依赖项过滤器,因为cobertura 需要要知道到底要另外检测什么(为了不检测所有东西)......
    • 我有一个多模块 Maven 项目的类似案例。各种模块具有共同的依赖关系。这就是为什么它成为一个单独的模块。在单独的模块上运行 Cobertura 时,它们不会显示对公共模块的任何覆盖。所以我对公共模块所做的测试一无所知。我认为这也只是检测这些类的问题,但我似乎无法让 Cobertura 包含它们。
    猜你喜欢
    • 2011-03-22
    • 1970-01-01
    • 2012-01-16
    • 2010-11-18
    • 2013-02-20
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    相关资源
    最近更新 更多