Android的拆分单元和集成测试

Vik*_*r K 8 android integration-testing unit-testing gradle

目前我有一个test/src/java文件夹,其中存储了android应用程序的所有测试(测试是使用junit,mockito和robolectric完成的).

我可以运行那些使用 ./gradlew test

我想要实现的是拥有两个文件夹:

  1. integrationTest/src/java - 用于集成测试
  2. test/src/java - 用于单元测试

而且我也想分开运行它们,比如./gradlew test./gradlew integrationTest.

我已经设法用sourceSets这样的测试分割目录:

    sourceSets {
        test {
            java {
                srcDirs = ['src/test/java', 'src/integrationTest/java', 'src/commonTest/java']
            }
            resources {
                srcDirs = ['src/test/resources', 'src/integrationTest/resources', 'src/commonTest/resources']
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我已经搜索了许多关于如何创建自定义测试任务的示例,但是大多数都与java而不是android有关,而其他的已经过时了.我现在花了整整一天,所以如果有人能帮助我,我会非常感激.

lan*_*ava 0

可能是这样的

sourceSets {
    integrationTest {
        java {
            compileClasspath += main.output
            runtimeClasspath += main.output
            srcDir 'src/integrationTest/java'
        }
        resources.srcDir 'src/integrationTest/resources'
    }
}

configurations {
    integrationTestCompile { 
        extendsFrom compile 
    }
    integrationTestRuntime {
        extendsFrom runtime
    }
}

task integrationTest(type: Test) {
    testClassesDir = sourceSets.integrationTest.output.classesDir
    classpath = sourceSets.integrationTest.runtimeClasspath
}
check.dependsOn integrationTest
Run Code Online (Sandbox Code Playgroud)

那么你可以做

dependencies {
    integrationTestCompile 'org.seleniumhq.selenium:selenium-java:3.0.1'
    integrationTestRuntime 'com.foo:bar:1.0'
}
Run Code Online (Sandbox Code Playgroud)