Gradle创建集成测试独立任务:关于sourceSets代码的疑问
关于Gradle中
val integrationTest by sourceSets.creating的作用解释 是的,这行代码确实是在创建一个新的SourceSet,它是Gradle Kotlin DSL里声明SourceSet的简洁写法,和你看到的“显式创建SourceSet”的写法本质完全一致,只是语法风格不同。
具体细节:
sourceSets是Gradle提供的SourceSet容器,creating是它的扩展函数,会自动创建并注册一个名为integrationTest的SourceSet实例,同时通过Kotlin的委托属性(by关键字)把这个实例赋值给integrationTest变量。- 这种写法等价于Groovy DSL里的
sourceSets { integrationTest },或者Kotlin DSL里更冗长的显式写法:val integrationTest = sourceSets.create("integrationTest") - 一旦创建这个SourceSet,Gradle会自动识别你放在
src/integrationTest目录下的代码结构(比如src/integrationTest/kotlin、src/integrationTest/resources),并为这个SourceSet生成对应的编译、资源处理等配套任务。
结合你提供的代码来看:
- 创建
integrationTestSourceSet后,"integrationTestImpl"(project)是给这个SourceSet添加依赖,对应Groovy写法里的integrationTestImplementation project。 - 后面注册的
integrationTest任务,就是把这个SourceSet编译后的类和依赖类路径关联起来,作为集成测试的运行环境;同时配置它在单元测试test任务之后执行,并且加入到check任务的依赖链中,确保执行./gradlew check时会自动运行集成测试。
内容的提问来源于stack exchange,提问作者user1555190
相关产品推荐
相关产品推荐

