【问题标题】:Recompiling sources with a test specific jar使用特定于测试的 jar 重新编译源代码
【发布时间】:2011-02-09 15:05:55
【问题描述】:

我有一个依赖于相当大的第三方库/api 的多模块项目。无法使用实际库运行自动化 junit 测试,因为 api 与开发环境管理之外的系统交互。作为一种解决方法,我们创建了模拟接口/api 的类,以便我们可以执行 junits。我们使用 eclipse 作为我们的 IDE 进行开发,所以要运行 junits,我们只需将 jar 在类路径中向上移动,重新编译,运行我们的 junits,一切正常。

现在我们正在转向 Maven,正在寻找类似的解决方案。基本上,在构建我们的代码之后,需要使用模拟 jar 重新构建所有代码来运行 junit 测试。这涉及应用程序的所有模块。我尝试在测试范围内添加 jar,但这仅用于编译测试类;源类仍然是用真正的 jar 编译的。但是,它在运行时失败,因为我们的模拟 jar 与真实 jar 的所有签名都不匹配(因此 jar 的热交换不起作用;使所有签名匹配将是一项艰巨的任务)。所以需要用jar重新编译源码。

看来有两种选择: 1)制作一个独立的测试模块,以某种方式拉入所有源模块代码并使用模拟jar重新编译它并运行测试或 2) 每个模块除了使用模拟 jar 编译的可安装 jar 之外,还创建一个 testjar,然后在测试阶段由依赖模块使用。

请指教。任何有关如何执行上述任一操作的示例都将不胜感激。

【问题讨论】:

    标签: junit maven automated-tests


    【解决方案1】:

    查看 this 链接。我认为它有你需要的东西。您可以使用两个 Maven 配置文件来处理这个问题。根据 this ,您可以对每个配置文件有不同的依赖关系。

    【讨论】:

      猜你喜欢
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 2014-08-29
      相关资源
      最近更新 更多