【问题标题】:Run JUnit tests from another project using Gradle?使用 Gradle 从另一个项目运行 JUnit 测试?
【发布时间】:2013-03-25 10:54:55
【问题描述】:

问题:是否可以在一个 Gradle 项目中运行 JUnit 测试,并且依赖于另一个项目?

背景

考虑这种多项目设置:

product_1_configuration_with_tests/
feature_a_with_tests/
feature_b_with_tests/
common_integration_tests/
  • 为简单起见,产品项目依赖于其他三个项目。不存在其他依赖项。
  • common_integration_tests 包含所有产品通用的集成测试,必须在产品的上下文(类路径/依赖项)中运行。
  • common_integration_tests 不能与任何其他项目有任何依赖关系。
  • 常见集成测试的行为因运行时类路径中的内容而异。

如何运行这些常见的集成测试?

尝试

理想情况下,我希望在产品项目中定义测试任务。我已经尝试在套件中包含集成测试:

// In product_1_configuration_with_tests/build.gradle
task integrationTest(type: Test) {
  include '**/MyIntegrationTest.class'
}

由于测试任务没有找到驻留在另一个模块中的测试,因此不执行任何测试。

【问题讨论】:

  • 我见过this question,但在这种情况下答案没有帮助。
  • 你能说得更具体点吗?确切的问题是什么,您尝试过什么,为什么不起作用等?另外,项目之间的确切依赖关系是什么?
  • 我已经尝试澄清我的问题。现在是不是更容易理解了?

标签: java junit gradle


【解决方案1】:

要么将集成测试源声明为 product_1_configuration_with_tests 项目的单独源集(放弃 common_integration_tests 项目),要么声明 common_integration_testsproduct_1_configuration_with_tests 的依赖。在新建项目中,前者将是更可取的方法,但后者也可以。其他解决方案是不必要的复杂。

common_integration_tests 不能与任何其他项目有任何依赖关系。

为什么?

【讨论】:

  • 更具体地说,它可以不依赖于任何产品项目。这是因为我们希望能够在许多产品中重用集成测试,并且我们的产品之间不能有依赖关系。
  • 这改变了游戏规则。产品是同一个 Gradle 构建的一部分吗?
  • 不,每个产品都是单独构建的(但都是使用 Gradle 构建的)。
  • 在这种情况下,您可以将测试发布为 Jar,并将它们作为 testCompile 依赖项拉入产品中。由于Test 任务还需要testClassesDir,您可能必须添加一个Copy 任务,将测试Jar 解压到某个目录并相应地配置Test 任务。您可以在forums.gradle.org 找到更多详细信息(该问题之前已提出)。
猜你喜欢
  • 2011-01-30
  • 2018-08-14
  • 2021-03-15
  • 2013-06-17
  • 2016-11-12
  • 1970-01-01
  • 2014-01-09
  • 2018-08-19
  • 2015-02-10
相关资源
最近更新 更多