Android:具有代码覆盖率的本地测试?

时间:2017-01-07 19:57:11

标签: android unit-testing android-studio android-testing jacoco

我想为我的类定义单元测试,并遇到以下问题。如果我在androidTest文件夹中定义单元测试(使用instrumentation进行测试),那么测试会正常运行并且结果有效。但是,如果我在测试文件夹中定义测试(本地测试),则运行测试会生成一条消息"未找到类:" [classname]"空测试套件"。这不会那么糟糕,我只是从androidTest运行所有测试,除了我想使用代码覆盖,Android Studio不允许我从androidTest运行覆盖测试,但只能从测试。

为什么Android Studio能够在测试文件夹中定义单元测试时找到单元测试,但能否在androidTest文件夹中定义它们?

代码:

public class SomeTest{

    private Context mInstrumentationCtx;

    @Before
    public void setup() {
        mInstrumentationCtx = InstrumentationRegistry.getTargetContext();
        // do some setup actions
    }

    @Test
    public void testFirst() throws Exception {
        Assert.assertEquals(true, true);
    }

}

Gradle配置:

android {

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

debug {
            testCoverageEnabled = true
        }
}

testCompile 'junit:junit:4.12'
    testCompile ('com.android.support.test:runner:0.5', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

compile 'com.android.support:appcompat-v7:25.1.0'

1 个答案:

答案 0 :(得分:1)

本身可能不是答案

您可以尝试更改

 testCompile ('com.android.support.test:runner:0.5', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})

在最近的gradle版本中似乎是默认的跑步者。

它适用于后者,但与前者失败

编辑:

经过一番努力后,看起来降级到版本2.2.3现在只是 解决方案,smth必须在2.3 beta中已经改变,作者已使用