Android:Skip Gradle"testClasses"任务用于依赖项目

Séb*_*ien 20 junit android gradle android-studio

我已按照本指南在Android Studio v1.4中为我的主要Android模块创建一个JUnit测试文件(我们称之为"module-a").

我的"module-a"依赖于作为.aar文件提供的外部库,我必须为其创建一个专用模块.

此依赖项会导致错误:

右键单击测试Java文件并点击"运行MyTestName"时,它将失败并显示此错误

Error:Gradle: 
FAILURE: Build failed with an exception.

* What went wrong:
Task 'testClasses' not found in project ':module-b'.
Run Code Online (Sandbox Code Playgroud)

删除对module-b的依赖性可以解决问题.

模块的摘录 - build.gradle:

compile project(':module-b')
Run Code Online (Sandbox Code Playgroud)

module-b build.gradle:

configurations.create("default")
artifacts.add("default", file('library-b.aar'))
Run Code Online (Sandbox Code Playgroud)

我应该如何配置Gradle以便它不会尝试testClasses在"module-b"上运行任务?(这应该解决我的问题)

Séb*_*ien 33

我没有找到跳过testClassesmodule-b任务的方法:似乎从Android Studio开始的操作(如运行JUnit测试)运行无法修改的Gradle命令.就我而言:

Information:Gradle: Executing tasks:
[:module-a:prepareFree_flavorDebugUnitTestDependencies,
 :module-a:generateFree_flavorDebugSources,
 :module-a:mockableAndroidJar,
 :module-a:assembleFree_flavorDebug,
 :module-a:assembleFree_flavorDebugUnitTest,
 :module-b:testClasses]
Run Code Online (Sandbox Code Playgroud)

不过我找到了解决问题的方法:

将以下代码添加到module-b build.gradle:

task testClasses {
    doLast {
        println 'This is a dummy testClasses task'
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您在 Kotlin 多平台项目中遇到此问题,请将该任务添加到共享 KMP 模块中的 build.gradle 中。 (6认同)