我已经将我的项目修改为多平台。
以前的状态:只有一个模块(项目)和一个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的函数分别是assembleDebug
和assembleRelease
。
由于我的发布过程(创建标记、更新版本、推送至git等)是在assembleRelease
之后运行的,所以我被卡住了,因为在夜间构建中运行buildNeeded
会触发发布过程。
因此,我修改了build.gradle文件,创建了一个名为releaseVersion
的任务,该任务依赖于zipalignRelease
。因此,当我真的想创建一个发布时,我会调用releaseVersion
,但当我只是想在夜间构建中构建/测试时,我就会调用buildNeeded
命令。
需要注意的是:测试结果将在每个模块的"构建"文件夹中。如果您使用CI,请小心清洁所有模块。