GradleAndroid:如何在不使用--info的情况下显示测试结果

GradleAndroid:如何在不使用--info的情况下显示测试结果,android,gradle,Android,Gradle,我正在使用Gradle android插件运行android测试,希望看到单独的测试结果 从对这个问题的回答来看,我似乎可以使用--info(它会打印出许多我不关心的冗长垃圾),或者使用这个只对Java插件有效的闭包(而不是Android插件) 当我运行connectedCheck任务时,是否可以使用其他选项/闭包来打印单个测试结果,而不需要所有其他“详细信息”。使用Gradle信息 这将打印来自Gradle的所有信息: gradle --info 或者使用AndroidGradle插件: 或

我正在使用Gradle android插件运行android测试,希望看到单独的测试结果

从对这个问题的回答来看,我似乎可以使用
--info
(它会打印出许多我不关心的冗长垃圾),或者使用这个只对Java插件有效的闭包(而不是Android插件)

当我运行
connectedCheck
任务时,是否可以使用其他选项/闭包来打印单个测试结果,而不需要所有其他“详细信息”。

使用
Gradle
信息 这将打印来自
Gradle
的所有信息:

gradle --info
或者使用Android
Gradle
插件: 或者直接使用
Gradle
: 见:

输出:

io.github.hidroh.materialistic.data.SessionManagerTest > testView PASSED

io.github.hidroh.materialistic.data.SessionManagerTest > testIsViewFalse PASSED

io.github.hidroh.materialistic.data.SessionManagerTest > testIsViewNull PASSED

io.github.hidroh.materialistic.data.SessionManagerTest > testIsViewTrue PASSED

io.github.hidroh.materialistic.data.SessionManagerTest > testViewNoId PASSED
来源:

Gradle文档:

对于Android Studio(在com.Android.tools.build:Gradle:2.1.0和Gradle版本Gradle-2.10上测试),我添加了以下部分,以完整格式打印异常,并记录每个执行的测试:

apply plugin: 'com.android.application'

android { ... }

dependencies { ...}

tasks.withType(Test) {
    testLogging {
        exceptionFormat "full"
    }
    afterTest { desc, result ->
        println "Executing test ${desc.name} [${desc.className}] with result: ${result.resultType}"
    }
}

对我来说,在另一个答案中提到的所有选项仍然打印了大量详细的信息。因此,尽管要求不要使用信息,我还是成功地使用了以下内容。例如,如果您的测试在包
com.example.android
中,您可以使用:

gradle --info connectedDebugAndroidTest | grep "com\.example\.android\..* >"
将打印e。g、 :

 com.example.android.login.LoginActivityTest > enterCredentialsTest[Testing_emulator(AVD) - 9] SUCCESS

“成功”这个词将是绿色的,这是非常棒的。

如果您使用
Robolectric
,这可能与
Robolectric Gradle插件有关,但这只会显示
测试和结果:
成功
/
失败
。我认为最好的选择是在控制台中显示测试失败时的“完全异常”。所有HTML测试结果都是在您的
构建/报告/测试中生成的。我不使用RoboeElectric-只使用普通的androidTestsYeah,我相信您已经解决了它<代码>--info
是您的最佳选择。添加
Robolectric
非常简单,您可以添加它以使用他们的插件。对于错误,您希望这样:我们的测试需要很长时间才能运行,所以我希望看到成功和失败,只是为了确信没有什么可怕的事情发生。您知道如何将此应用于所有gradle(库)项目中的模块?将其放入顶级build.gradle失败,因为无法识别
android
,而将其放入应用程序模块仅打印该模块中测试的输出。@user1405990将
所有项目
任务一起使用。withType(Test)
apply plugin: 'com.android.application'

android { ... }

dependencies { ...}

tasks.withType(Test) {
    testLogging {
        exceptionFormat "full"
    }
    afterTest { desc, result ->
        println "Executing test ${desc.name} [${desc.className}] with result: ${result.resultType}"
    }
}
gradle --info connectedDebugAndroidTest | grep "com\.example\.android\..* >"
 com.example.android.login.LoginActivityTest > enterCredentialsTest[Testing_emulator(AVD) - 9] SUCCESS