在Android Studio中将集成testing与unit testing分离

我试图在Android Studio 0.9中分离出集成testing

我已经将以下内容添加到构build文件中:

sourceSets { integrationTest { java.srcDir file('src/integrationTest/java') } } task integrationTest(type: Test) { testClassesDir = sourceSets.integrationTest.output.classesDir classpath = sourceSets.integrationTest.runtimeClasspath } 

我遇到了几个问题:

  1. 该任务将运行,但它没有其余的项目文件可用,所以我得到有关丢失类的错误。 我发现了一些Java特定的解决scheme,例如:

    • 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。 mainmain.output和依赖关系的各种组合似乎不起作用,我得到的错误如:

     Error:(33, 0) Could not find property 'main' on SourceSet container.. 

    这是有道理的android插件定义自己的源集,但这些都不工作。

  2. IDE不会将该目录识别为testing源目录。 出于testing目的,我将源代码集名称更改为androidTest ,并正确地获取了绿色文件夹图标,并且testing与已经在androidTest定义的现有unit testing一起运行。

Solutions Collecting From Web of "在Android Studio中将集成testing与unit testing分离"

我在Gradle中完成了这种分离,但是对于纯Java项目,而不是Android。 你没有在源集中指定类path,我认为这是问题。 这里是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 

IntelliJ的想法,如果他们有标准的名称(Java,资源),拿起src/integration下的文件夹。

@ sm4的答案确实为一个Java模块(与apply plugin: 'java' ),但不幸的是不适用于Android应用程序( apply plugin: 'com.android.application' ),也不是Android库模块( apply plugin: com.android.library )。

但是我find了一个解决方法:
为您的集成testing创build文件夹:

 src/integrationTest/java src/integrationTest/res 

为您的新文件夹添加sourceSets:

 sourceSets { integrationTest { java { srcDir file('src/integrationTest/java') } res { srcDir file('src/integrationTest/res') } } } 

在纯Java模块中, java文件夹现在变成绿色, res文件夹图标将会改变。 在Android应用程序/库模块中,它没有。

现在创build一个与sourceSet中configuration的文件夹名称相同的产品风格,并且它可以工作!

 productFlavors { integrationTest { } } 

把樱桃放在上面:

 configurations { integrationTestCompile.extendsFrom testCompile }