Gradle:如何从模块依赖项运行测试



我已经将我的项目修改为多平台。

以前的状态:只有一个模块(项目)和一个build.gradle。所有的测试都在测试文件夹中,当我运行gradlew testDebug时,我的500个测试都在运行。

新状态:我有一个主要的gradle项目,除了持有3个模块之外什么都不做

  • 堆芯
  • 男性化
  • rasberryPiVersion

每个模块都有自己的gradle文件,但只能构建android和rasberryPi模块。在它们的依赖项中(在各自的build.gradle文件中),它们根据"核心"模块进行编译。像这样:

dependencies {
    compile project(':clapcore')
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android:android:4.1.1.4'
}

我所有的500次测试现在都在核心阶段。所以当我在安卓模块上做gradlew clean assembleDebug testDebug时,没有检测到测试,测试结果的文件夹是空的。

我试图直接在核心模块上运行testDebug命令,但由于它不是自己构建的,我收到了错误:

FAILURE: Build failed with an exception.
* What went wrong:
Task 'testDebug' not found in project ':core'.

所以我的问题是:在gradle中,有没有一种方法可以告诉"testDebug"命令运行它的模块依赖项(核心)中的所有测试?

我也尝试在android模块的依赖项中添加一个testCompile,但它不起作用,比如:

dependencies {
    compile project(':clapcore')
    testCompile project(':clapcore')
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android:android:4.1.1.4'
}

谢谢!

编辑我发现我可以在core上执行命令gradlew build,它将在"core"模块中运行测试。但如果可能的话,我想要一种通过"级联"运行这些测试的方法。

*编辑2*我发现我可以在"android"模块上执行命令gradlew buildNeeded,它将为android模块和核心进行构建。不幸的是,它只是内置版本!如果有人能为我指出一种在调试中使用此函数的方法,那将是令人惊叹的。我需要在调试中使用它,因为发布版本会启动更多的任务,如更改版本、提交到git、推送等……这只适用于夜间构建,所以它需要进行调试。

在阅读了Gradle网站的文档后,我发现非常好的函数buildNeeded只需运行所有buildType,就可以更改。唯一允许您选择buildType的函数分别是assembleDebugassembleRelease

由于我的发布过程(创建标记、更新版本、推送至git等)是在assembleRelease之后运行的,所以我被卡住了,因为在夜间构建中运行buildNeeded会触发发布过程。

因此,我修改了build.gradle文件,创建了一个名为releaseVersion的任务,该任务依赖于zipalignRelease。因此,当我真的想创建一个发布时,我会调用releaseVersion,但当我只是想在夜间构建中构建/测试时,我就会调用buildNeeded命令。

需要注意的是:测试结果将在每个模块的"构建"文件夹中。如果您使用CI,请小心清洁所有模块。

最新更新