首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android仪器测试有时工作,有时无法生成覆盖范围

Android仪器测试有时工作,有时无法生成覆盖范围
EN

Stack Overflow用户
提问于 2020-06-24 00:24:46
回答 1查看 1.5K关注 0票数 0

目前,我在使用connectedAndroidTest生成仪器测试覆盖率和艾玛报告方面遇到了一个奇怪的问题。当我运行./gradlew connectedAndroidTest时,它有时工作,生成报告,有时不工作。

当我通过adb shell am instrument运行时,它总是工作的,但问题是我需要获得.ec文件来自动与单元测试报告统一。我没有从第二次审判中改变任何东西。

输出:

代码语言:javascript
运行
复制
MacBook-Pro:test-android dimas$ ./gradlew connectedAndroidTest

> Configure project :app
OneSignal Warning: Could not get AGP plugin version

> Task :app:kaptDebugAndroidTestKotlin
Annotation processors discovery from compile classpath is deprecated.
Set 'kapt.includeCompileClasspath = false' to disable discovery.
Run the build with '--info' for more details.

> Task :app:createDebugAndroidTestCoverageReport FAILED

> Task :app:connectedDebugAndroidTest
Starting 8 tests on Pixel_2_API_28(AVD) - 9

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:createDebugAndroidTestCoverageReport'.
> java.io.IOException: No coverage data to process in directories [/Users/.../app/build/outputs/code_coverage/debugAndroidTest/connected]

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 1m 7s
61 actionable tasks: 13 executed, 48 up-to-date
MacBook-Pro:test-android dimas$ ./gradlew connectedAndroidTest

> Configure project :app
OneSignal Warning: Could not get AGP plugin version

> Task :app:connectedDebugAndroidTest
Starting 8 tests on Pixel_2_API_28(AVD) - 9

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 56s
61 actionable tasks: 2 executed, 59 up-to-date

这些是我的等级DSL设置,用于:

安卓相关

代码语言:javascript
运行
复制
defaultConfig {
       ...
       testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
       ...
    }

buildTypes {
    all {
        multiDexEnabled = true
        ...
    }

    getByName("debug") {
        isDebuggable = true
        isMinifyEnabled = false
        isTestCoverageEnabled = true

        proguardFiles(
            getDefaultProguardFile("proguard-android-optimize.txt"),
            "proguard-rules.pro"
        )
        ...
    }
    ...
}

Jacoco

代码语言:javascript
运行
复制
/* Jacoco & Tests Related tasks */
jacoco {
    toolVersion = "0.8.5"
}

测试

代码语言:javascript
运行
复制
testOptions {
    animationsDisabled = true
    unitTests.apply {
        isReturnDefaultValues = true
        isIncludeAndroidResources = true
    }
}

val sharedTestDir = "src/sharedTest/java"
sourceSets.getByName("test") {
    java.srcDir(sharedTestDir)
}

sourceSets.getByName("androidTest") {
    java.srcDir(sharedTestDir)
}

有人知道如何使它正常工作吗?看来,app:createDebugAndroidTestCoverageReport内部任务在实际进行测试之前由gradle执行。

EN

回答 1

Stack Overflow用户

发布于 2020-07-28 19:49:30

将Gradle降级为4.0.0,将Gradle包装降为6.1.1,这对我来说是件好事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62545729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档