将集成测试与Android Studio中的单元测试分开

我试图在 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

如果IntelliJ想法具有标准名称(java,资源),则会在src / integration下拾取文件夹.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...