如何在命令行使用Android gradlew时显示完整多行断言信息?
问题复现
- 通过Android Studio创建了一个包含空Activity的Android项目,在
ExampleInstrumentedTest类的useAppContext()测试方法中添加如下输出多行断言信息的代码:
@RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest { @Test public void useAppContext() { // Context of the app under test. Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); assertEquals("com.example.myapplication", appContext.getPackageName()); Assert.fail("1. Test failed\n2. Test failed\n3. Test failed\n"); } }
- 在Android Studio中直接运行测试,可以正常展示完整的多行断言错误信息:
java.lang.AssertionError: 1. Test failed 2. Test failed 3. Test failed
- 在命令行执行
./gradlew connectedDebugAndroidTest命令运行测试时,仅能输出前两行断言内容:
$ ./gradlew connectedDebugAndroidTest
com.example.myapplication.ExampleInstrumentedTest > useAppContext[SM-G950U - 9] FAILED java.lang.AssertionError: 1. Test failed 2. Test failed > Task :app:connectedDebugAndroidTest FAILED
- 运行环境及依赖版本如下:
MacOS 11.3.1 Android Studio 4.2.1 classpath "com.android.tools.build:gradle:4.2.1" testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
解决方案
该问题是Android Gradle插件默认对测试异常输出做了截断处理,默认最多显示2行异常消息,修改配置即可完整输出:
- 打开项目下app模块的
build.gradle文件,在android配置块中添加如下配置:
android { // 保留你原有其他配置不变 testOptions { connectedCheck { // 设置异常输出格式为完整模式,不截断内容 exceptionFormat = 'full' } } }
- 配置完成后重新运行
./gradlew connectedDebugAndroidTest命令,即可看到完整的多行断言信息。
如果不想修改配置文件,也可以在运行命令时临时指定参数,效果相同:
./gradlew connectedDebugAndroidTest -Pandroid.testOptions.connectedCheck.exceptionFormat=FULL
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

