Android Studio单元测试中无法查看Log输出的问题排查
解决Android单元测试中Log无输出的问题
核心原因很明确:你写的是本地单元测试(位于src/test/java目录下),这类测试直接在本地电脑的JVM上运行,完全不依赖Android设备或模拟器。而Android Studio的Logcat是专门捕捉Android设备/模拟器上的系统和应用日志的,所以本地JVM里的Log.*输出根本不会出现在Logcat里。
正确查看日志的方式
直接查看Android Studio的Run窗口——就是你启动单元测试后底部弹出的控制台面板。所有Log.d()/Log.i()等调用的输出,都会直接打印在这里。
如果想要更贴近Logcat的格式,或者需要简单过滤,可以自己写个轻量的测试日志工具,替代Android原生的Log类:
object TestLogger { fun debug(tag: String, message: String) { println("[DEBUG] $tag: $message") } fun error(tag: String, message: String) { println("[ERROR] $tag: $message") } // 按需添加warn、info等方法 }
在单元测试里用TestLogger.debug("TAG", "测试输出")替代Log.d(),输出会清晰显示在Run窗口中。
为什么你之前的方案没用
- 伴生对象加
@JvmStatic:只是解决Java代码调用Kotlin伴生方法的兼容性问题,完全不改变日志的输出目标 - build.gradle的testOptions配置:一般用来设置测试的JVM参数、覆盖率等,和日志输出无关
- 自定义MyLog类:如果你的自定义类底层还是调用了
android.util.Log,那在本地单元测试环境中,Android框架的Log实现是空实现(没有Android系统支持),不会产生任何输出
补充区分测试类型
- 本地单元测试:
src/test/java,本地JVM运行,日志看Run窗口 - 仪器化测试:
src/androidTest/java,在设备/模拟器上运行,这类测试的Log.*输出可以在Logcat中看到
内容的提问来源于stack exchange,提问作者Fiordarancio
相关产品推荐
相关产品推荐

