我正在尝试迁移到Gradle 7.3中引入的test suites。我想做的是将testImplementation
依赖项添加到我的集成测试中。
testing {
suites {
val test by getting(JvmTestSuite::class) {
useJUnitJupiter()
}
val integrationTest by registering(JvmTestSuite::class) {
dependencies {
implementation(project) // This adds dependencies to the prod code
// What to add to automatically use testImplementation deps?
}
...
}
}
}
4条答案
按热度按时间mm5n2pyu1#
你可能想让
integrationTestImplementation
配置扩展testImplementation
配置--就像testImplementation
已经默认扩展了implementation
一样。下面是一个自包含的示例(使用Gradle 7.3.2进行测试):
如果您运行
./gradlew dependencies --configuration integrationTestRuntimeClasspath
* 并配置了 * 配置继承,那么您将得到以下输出(缩写):但是,如果您运行同一个命令,* 而不 * 配置继承,那么您将得到以下输出(缩写)-请注意缺少
org.assertj:assertj-core:3.21.0
依赖项:根据答案注解中的要求,这里还有一种方法可以使单元测试套件中的测试数据类可用于集成测试:
3mpgtkmj2#
我是一个Gradle开发人员,目前正在开发这个孵化功能。
需要记住的一点是,虽然当前为每个测试套件创建的配置名称都基于相应的
sourceSet
的名称,它与测试套件本身的名称相匹配,* 这些名称应该被视为实现细节 *。测试套件的主要目标之一是在这些细节上构建一个有用的抽象层,并允许您在不具备此类管道详细知识的情况下配置它们。将配置与
extendsFrom
连接在一起违背了这一意图,任何类型的名称检索也是如此,应该将其视为反模式。更好的选择包括使用
suites.withType(JvmTestSuite).configureEach { suite -> ... }
或创建一个包含您想要的配置的Closure
,并使用它来配置感兴趣的测试套件,如下所示:我们正在努力扩展测试套件和每个套件的
dependencies
块提供的功能,并使文档更明确地说明这一点。您可以在Gradle文档的未来版本中查看此建议的预览(可能会有进一步的更改)-您必须以访客身份登录。6ss1mwsb3#
我想出了以下解决方案
yeotifhr4#
这就是我用来避免为
test
和customTest
任务重写两次相同依赖项的方法。也许这并不像@Tom Tresansky所建议的那样,但我发现它非常方便: