从 Benjamin Muschko's answer(2011 年 3 月 19 日)开始,您可以使用 -i 标志和 grep 来过滤掉数千条不需要的行。例子:
强过滤器 - 仅显示每个单元测试名称和测试结果以及整体构建状态。不显示设置错误或异常。
./gradlew test -i | grep -E " > |BUILD"
软过滤器 - 显示每个单元测试名称和测试结果,以及设置错误/异常。但它也会包含一些不相关的信息:
./gradlew test -i | grep -E -v "^Executing |^Creating |^Parsing |^Using |^Merging |^Download |^title=Compiling|^AAPT|^future=|^task=|:app:|V/InstrumentationResultParser:"
软过滤器,替代语法:(搜索标记被分割成单独的字符串)
./gradlew test -i | grep -v -e "^Executing " -e "^Creating " -e "^Parsing " -e "^Using " -e "^Merging " -e "^Download " -e "^title=Compiling" -e "^AAPT" -e "^future=" -e "^task=" -e ":app:" -e "V/InstrumentationResultParser:"
工作原理说明:
第一个命令是./gradlew test -i,"-i" 表示“信息/详细”模式,实时打印每个测试的结果,但也显示大量不需要的调试行。
所以第一个命令./gradlew test -i 的输出通过管道传送到第二个命令grep,它将根据正则表达式过滤掉许多不需要的行。 "-E" 为单个字符串启用正则表达式模式; "-e" 启用多个字符串的正则表达式;而正则表达式字符串中的"|" 表示“或”。
在强过滤器中,允许使用" > "显示单元测试名称和测试结果,使用"BUILD"允许显示整体状态。
在软过滤器中,"-v" 标志表示"not containing","^" 表示“行首”。所以它会去掉所有以“Executing”开头的行或以“Creating”开头的行,等等。
带有 gradle 5.1 的 Android 仪器单元测试示例:
./gradlew connectedDebugAndroidTest --continue -i | grep -v -e \
"^Transforming " -e "^Skipping " -e "^Cache " -e "^Performance " -e "^Creating " -e \
"^Parsing " -e "^file " -e "ddms: " -e ":app:" -e "V/InstrumentationResultParser:"
Jacoco 单元测试覆盖率示例,使用 gradle 4.10:
./gradlew createDebugCoverageReport --continue -i | grep -E -v "^Executing |^Creating |^Parsing |^Using |^Merging |^Download |^title=Compiling|^AAPT|^future=|^task=|:app:|V/InstrumentationResultParser:"