在基于Android Gradle的项目中设置集成测试 [英] Setting up integration tests in Android Gradle-based project
问题描述
我遵循此教程将集成测试env添加到我的Android项目中。
我创建了 src / integrationTest / java
和 src / integrationTest / resources
目录,然后添加了这对我的 build.gradle
:
sourceSets {
integrationTest {
java {
compileClasspath + = main.output + test.output
runtimeClasspath + = main.output + test.output
srcDir file('src / integrationTest / java' )
}
resources.srcDir文件('src / integrationTest / resources')
}
}
但是,当我同步Gradle文件时,出现以下错误:
$ b
错误:(134, 0)没有这样的属性:主类:
org.gradle.api.internal.file.DefaultSourceDirectorySet可能
解决方案:名称
这是什么意思?如何解决它?
谢谢
编辑
我刚刚尝试过使用 android.sourceSets.main.output
和 android.sourceSets.test.output
代替 main.output
和 test.output
,分别为:
sourceSets {
integrationTest {
java {
compileClasspath + = android.sourceSets.main.output + android.sourceSets .test.output
runtimeClasspath + = android.sourceSets.main.output + android.sourceSets.test.output
srcDir file('src / integrationTest / java')
}
resources.srcDir文件('src / integrationTest / resources')
}
}
<现在我得到这个错误:
lockquote
错误:(136,0)无法在source set main上找到属性'output'。
解决d!实际上,这些行不一定要在源集配置中,而是在运行集成测试的任务中。现在,我的 build.gradle
看起来像:
sourceSets {
integrationTest {
java.srcDir文件('src / integrationTest / java')
resources.srcDir文件('src / integrationTest / resources')
}
}
配置{
integrationTestCompile.extendsFrom testCompile
}
任务integrationTest(类型:Test){
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
}
I'm following this tutorial to add integration test env to my Android project.
I have create src/integrationTest/java
and src/integrationTest/resources
dirs and then I have added this to my build.gradle
:
sourceSets {
integrationTest {
java {
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
srcDir file('src/integrationTest/java')
}
resources.srcDir file('src/integrationTest/resources')
}
}
But when I sync Gradle files I get this error:
Error:(134, 0) No such property: main for class: org.gradle.api.internal.file.DefaultSourceDirectorySet Possible solutions: name
What does it means? How can I solve it?
Thanks
EDIT
I have just tried with android.sourceSets.main.output
and android.sourceSets.test.output
instead of main.output
and test.output
, respectively:
sourceSets {
integrationTest {
java {
compileClasspath += android.sourceSets.main.output + android.sourceSets.test.output
runtimeClasspath += android.sourceSets.main.output + android.sourceSets.test.output
srcDir file('src/integrationTest/java')
}
resources.srcDir file('src/integrationTest/resources')
}
}
And now I get this error:
Error:(136, 0) Could not find property 'output' on source set main.
Solved! Actually, these lines don't have to be in source set config, but in the task that runs integration tests. Now, my build.gradle
looks like:
sourceSets {
integrationTest {
java.srcDir file('src/integrationTest/java')
resources.srcDir file('src/integrationTest/resources')
}
}
configurations {
integrationTestCompile.extendsFrom testCompile
}
task integrationTest(type: Test) {
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
}
这篇关于在基于Android Gradle的项目中设置集成测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!