我在gradle中有一个多项目构建。这是一个Android项目,当我在Android Studio中手动执行时,有问题的测试确实会运行。该项目的结构如下:
.../my-app$ ./gradlew -q projects
[...]
Root project 'my-app'
+--- Project ':myapp'
\--- Project ':mymodel'
[...]
我想在:myapp
中执行一个测试(类)。由于版本限制,我必须使用项目根目录中的gradlew
。
执行单个测试的正确命令似乎是./gradlew test --tests my.project.MyTest
,但我不知道如何对子项目执行该命令。
如果我运行./gradlew test --tests my.project.MyTest
,我得到
FAILURE: Build failed with an exception.
* What went wrong:
Problem configuring task :myapp:test from command line.
> Unknown command-line option '--tests'.
并建议运行gradle help --task :myapp:test
,得到
> Task :help
Detailed task information for :myapp:test
Path
:myapp:test
Type
Task (org.gradle.api.Task)
Description
Run unit tests for all variants.
Group
verification
而且根本没有命令行选项,所以我想我可以把它留在外面。./gradlew test my.project.MyTest
给出Task 'my.project.MyTest' not found in root project 'my-app'.
对于./gradlew :myapp:test my.project.MyTest
也是如此。
This answer到一个较老的问题建议拼写出变体名称,对于我来说是./gradlew :myapp:testReleaseUnitTest --tests my.project.MyTest
,并产生
> Task :myapp:testReleaseUnitTest FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':myapp:testReleaseUnitTest'.
> No tests found for given includes: [my.project.MyTest](--tests filter)
./gradlew --version
是7.1
,我刚刚升级到./gradlew wrapper --gradle-version 7.1
和gradle wrapper
。
在这一点上我已经没有办法了。我做错了什么?我怎么能在命令行中运行一个单一的测试?
1条答案
按热度按时间x6h2sr281#
我正在寻找类似的问题,遇到了你的问题,这为我提供了一些提示。经过一些试验,我发现从根运行子项目的特定任务的语法似乎是:
因此,对于类似于以下的项目结构:
根项目:
app
+---子项目
:subapp1
+---子项目
:subapp2
从root运行
subapp1
子项目中的MyTest
test的命令是:编辑:混淆的来源是:
运行
./gradlew -q projects
时,Gradle报告子项目时会使用前导:
字符。请勿在命令中使用该字符。