Separating integration tests from unit tests in Android Studio

后端 未结 2 974
陌清茗
陌清茗 2021-02-13 23:16

I\'m trying to separate out integration tests in Android Studio 0.9.

I have added the following to the build file:

sourceSets {
    integrationTest {
            


        
相关标签:
2条回答
  • 2021-02-13 23:24

    I've done exactly this kind of separation in Gradle, but for a pure Java project, not Android. You are not specifying the classpath in source sets, which I think is the issue. Here's the relevant part of the 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 idea picks up the folders under src/integration if they have the standard names (java, resources).

    0 讨论(0)
  • 2021-02-13 23:37

    @sm4's answer works indeed for a Java module (with apply plugin: 'java'), but unfortunately not for Android application (apply plugin: 'com.android.application') nor Android library modules (apply plugin: com.android.library).

    But I have found a workaround:
    Create the folders for your integration tests:

    src/integrationTest/java
    src/integrationTest/res
    

    Add the sourceSets for your new folders:

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

    In a pure Java module the java folder would now turn green and the res folder icon would change. In an Android application/library module it does not.

    Now create a product flavor identically named as the folder configured in the sourceSet, and it works!

    productFlavors {
        integrationTest {
        }
    }
    

    And to put a cherry on top:

    configurations {
        integrationTestCompile.extendsFrom testCompile
    }
    
    0 讨论(0)
提交回复
热议问题