我正在尝试迁移到Gradle 7.3 中引入的测试套件。我想做的是将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?
}
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*iki 18
您\xe2\x80\x99d 可能喜欢让integrationTestImplementation
配置扩展testImplementation
配置\xe2\x80\x93,就像默认情况下testImplementation
已经扩展一样implementation
。另请参阅有关配置继承的文档。
Here\xe2\x80\x99s 是一个独立的示例(使用 Gradle 7.3.2 进行测试):
\nplugins {\n `java-library`\n}\n\nrepositories {\n mavenCentral()\n}\n\ntesting {\n suites { \n val test by getting(JvmTestSuite::class) { \n useJUnitJupiter() \n dependencies {\n implementation("org.assertj:assertj-core:3.21.0")\n }\n }\n\n val integrationTest by registering(JvmTestSuite::class) { \n dependencies {\n // TODO add any integration test only dependencies here\n }\n }\n }\n}\n\n// Here\xe2\x80\x99s the bit that you\xe2\x80\x99re after:\nval integrationTestImplementation by configurations.getting {\n extendsFrom(configurations.testImplementation.get())\n}\n
Run Code Online (Sandbox Code Playgroud)\n如果您在配置了配置继承的情况./gradlew dependencies --configuration integrationTestRuntimeClasspath
下运行,那么您\xe2\x80\x99将获得以下输出(缩写):
integrationTestRuntimeClasspath - Runtime classpath of source set \'integration test\'.\n+--- org.junit.jupiter:junit-jupiter:5.7.2\n| +--- org.junit:junit-bom:5.7.2\n| | \xe2\x80\xa6\n| +--- org.junit.jupiter:junit-jupiter-api:5.7.2\n| | \xe2\x80\xa6\n| +--- org.junit.jupiter:junit-jupiter-params:5.7.2\n| | \xe2\x80\xa6\n| \\--- org.junit.jupiter:junit-jupiter-engine:5.7.2\n| \xe2\x80\xa6\n\\--- org.assertj:assertj-core:3.21.0\n
Run Code Online (Sandbox Code Playgroud)\n但是,如果您在没有配置继承的情况下运行相同的命令,则\xe2\x80\x99 将获得以下输出(缩写)\xe2\x80\x93 请注意缺少的org.assertj:assertj-core:3.21.0
依赖项:
integrationTestRuntimeClasspath - Runtime classpath of source set \'integration test\'.\n\\--- org.junit.jupiter:junit-jupiter:5.7.2\n +--- org.junit:junit-bom:5.7.2\n | \xe2\x80\xa6\n +--- org.junit.jupiter:junit-jupiter-api:5.7.2\n | \xe2\x80\xa6\n +--- org.junit.jupiter:junit-jupiter-params:5.7.2\n | \xe2\x80\xa6\n \\--- org.junit.jupiter:junit-jupiter-engine:5.7.2\n
Run Code Online (Sandbox Code Playgroud)\n根据答案评论中的要求,here\xe2\x80\x99s 另外一种使单元测试套件中的测试数据类可用于集成测试的方法:
\nsourceSets.named("integrationTest") {\n java {\n val sharedTestData = project.objects.sourceDirectorySet("testData",\n "Shared test data")\n sharedTestData.srcDir("src/test/java")\n sharedTestData.include("com/example/MyData.java")\n source(sharedTestData)\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
4794 次 |
最近记录: |