移动测试基础 晕头转向的提问:使用 Jacoco 统计 Android 手工测试覆盖率,每次使用 adb 命令后,都卡在调用的 activity 或者 app 直接闪退;

淼淼淼 · 2017年02月24日 · 最后由 回复于 2019年04月29日 · 1799 次阅读

背景简介:最近在研究 Jacoco,参考了易寒在社区的文章传送门,直接使用到自己项目上出现了下面的问题;

每次使用 adb(adb shell am instrument xxx/xxx) 命令后,都卡在调用的 activity 或者 app 直接闪退;

  1. 导入的 java 文件,以及各项配置我已经检查了几遍没有问题;
  2. 第一款 app,使用 adb 调起 app 后,app 直接崩溃;查看 logcat,报错代码如下: restore file fail. java.io.FileNotFoundException: /storage/emulated/0/Android/data/xxx.xxx.xxx/files/awcn_strategy/channel: open failed: EISDIR (Is a directory) at libcore.io.IoBridge.open(IoBridge.java:444) at java.io.FileInputStream.<init>(FileInputStream.java:78) at anet.channel.util.h.a(Taobao:87) at anet.channel.strategy.l.b(Taobao:116) at anet.channel.strategy.StrategyInfoHolder.a(Taobao:139) at anet.channel.strategy.StrategyInfoHolder.a(Taobao:31) at anet.channel.strategy.f.run(Taobao:120) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) Caused by: libcore.io.ErrnoException: open failed: EISDIR (Is a directory) at libcore.io.Posix.open(Native Method) at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
  3. 看到报错我觉得是 app 的问题.所以我又尝试自己创建了一个 helloworld 最为简单的工程,成功调起来了,但是coverage.ec文件没有任何记录 0 字节;
  4. 于是我尝试使用第 3 款 app,卡在调用的 activity,logcat 报错如下: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering 可以看到找不到这个 class,于是查看源代码发现boolean hasOverlappingRendering() { final Drawable background = mView.getBackground(); if (Build.VERSION.SDK_INT >= 21 && background instanceof android.graphics.drawable.RippleDrawable) { // RippleDrawable has an issue on L+ when used with an alpha animation. // This workaround should be disabled when the platform bug is fixed. See b/27715789 return false; } return true; } },可能跟 SDK 版本有关系,但是我看我测试手机版本为4.4.2(19)不应该走这段代码才对啊;
  5. 从此后懵逼了,是手机原因?还是我 Jacoco 使用的问题?还是 app 的原因?
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 7 条回复 时间 点赞
淼淼淼 测试开发之路 -- 英雄迟暮,我心未老 中提及了此贴 02月25日 13:52

这个问题怎么解决的,求分享😹

对酒当歌 回复

这个不好分析.最好有 log.我这边最后是 build,gradle 的配置问题.😥

淼淼淼 回复

多谢,我再看看配置😄

您好!
请教个问题,如果
1.app 含有引导页,启动顺序如.SplashActivity -->.GuideActivity-->HomeActivity,
2.在 Manifest 文件中 SplashActivity 被声明
android.intent.category.LAUNCHER,android.intent.action.MAIN。
且 app 限制只能由 SplashActivity 启动。
那么,InstrumentedActivity 中 ” public class InstrumentedActivity extends XXXActivity {} “ XXXActivity 应该是哪个呢?
SplashActivity?HomeActivity?GuideActivity?

对酒当歌 回复

你好,想问一下闪退的是怎么解决的呢?

淼淼淼 回复

你好,请问这个贴子的问题最后解决了么?方案是什么呢?

小敏 回复

请问闪退的问题解决了么?怎么解决有啊?困扰我很久了😭 😭

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册