我试图在
Android Studio 0.9中分离出集成测试.
sourceSets { integrationTest { java.srcDir file('src/integrationTest/java') } } task integrationTest(type: Test) { testClassesDir = sourceSets.integrationTest.output.classesDir classpath = sourceSets.integrationTest.runtimeClasspath }
我遇到了几个问题:
>任务将运行,但没有其余的项目文件可用,所以我收到有关缺少类的错误.有一些Java特定的解决方案,我发现如:
> http://selimober.com/blog/2014/01/24/separate-unit-and-integration-tests-using-gradle/
> https://blog.safaribooksonline.com/2013/08/22/gradle-test-organization/
但是我无法弄清楚如何使它与Android Studio一起使用. main和main.output的各种组合以及依赖关系的播放似乎不起作用,我会收到以下错误:
Error:(33,0) Could not find property 'main' on SourceSet container..
这是有道理的,因为android插件定义了自己的源代码集,但这些也不起作用.
> IDE不能将目录识别为测试源目录.为了测试目的,我将源集名称更改为androidTest,并且它正确地获取了绿色文件夹图标,并且测试与已经在androidTest中定义的单元测试一起运行.
解决方法
我在Gradle中完成了这种分离,但是对于一个纯Java项目而不是Android.您没有在源集中指定类路径,我认为这是问题.这是build.gradle的相关部分:
sourceSets { integration { java { compileClasspath += main.output + test.output runtimeClasspath += main.output + test.output srcDir file('src/integration/java') } resources { srcDir 'src/integration/resources' } } } configurations { integrationCompile.extendsFrom testCompile integrationRuntime.extendsFrom testRuntime } task integrationTest(group: "verification",type: Test) { testClassesDir = sourceSets.integration.output.classesDir classpath = sourceSets.integration.runtimeClasspath } integrationTest.dependsOn testClasses