gpt4 book ai didi

java - Gradle : How to run tests from a module dependency?

转载 作者:搜寻专家 更新时间:2023-11-01 00:55:07 24 4
gpt4 key购买 nike

我修改了我的项目以使其成为多平台的。

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

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

  • 核心
  • 安卓版本
  • 树莓派版本

这些模块中的每一个都有自己的 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 个测试现在都在核心中。因此,当我在 Android 模块上执行 gradlew clean assembleDebug testDebug 时,没有检测到测试并且 test-result 文件夹为空。

我试图直接在核心模块上运行 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'
}

谢谢!

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

*编辑 2 *我发现我可以在“android”模块上执行命令 gradlew buildNeeded,它将为 android 模块和核心构建。不幸的是,它只在发布时构建!如果有人能指出一种使用此功能但处于调试状态的方法,那就太棒了。我在调试中需要它,因为发布构建会启动更多任务,例如版本更改、提交到 git、推送等...这仅适用于夜间构建,因此需要处于调试状态。

最佳答案

看了Gradle网站的文档后,我发现buildNeeded这个很好用的函数只是运行所有的buildType,你不能改变。唯一可以让您选择构建类型的函数分别是 assembleDebugassembleRelease

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

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

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

关于java - Gradle : How to run tests from a module dependency?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37050469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com