首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >艾玛com.vladium.emma.EMMARuntimeException:[CLASS_STAMP_MISMATCH]

艾玛com.vladium.emma.EMMARuntimeException:[CLASS_STAMP_MISMATCH]
EN

Stack Overflow用户
提问于 2012-01-24 03:47:22
回答 2查看 2.2K关注 0票数 0

好吧艾玛要杀了我。我已经在这上面花了两天时间了。

艾玛现在有两个问题

  1. 它部分是通过单元测试崩溃的。
  2. 它抱怨阶级邮票错配。:com.vladium.emma.EMMARuntimeException: [CLASS_STAMP_MISMATCH] runtime version of class xxx in the coverage data is not consistent with the version of this class in the metadata, possibly because stale metadata is being used for report generation

虽然我能忍受这些事故,但我并不打算修复它,

INSTRUMENTATION_RESULT: shortMsg=Process崩溃了。执行INSTRUMENTATION_CODE: 0

然而,我希望看到我的报道结果。

我试过:

  1. 清洗设备
  2. 摧毁了整个工作空间(在Jenkins)
  3. 使用命令提示符(绕开jenkins、ant洁净、ant emma调试安装测试)

我对此错误的理解是安装了apk,并且在单元测试中包含不同的二进制文件,因此它的元数据信息与生成的coverage.em过时了。

我可以确定这在我的情况下是不可能的,因为我清洁,蚂蚁清理,甚至清除了整个工作空间和电话内存。现在对我来说一点意义都没有。

请帮忙~

我正在使用Android r16,NDK5c,以及Ant和Emma的默认设置。

EN

回答 2

Stack Overflow用户

发布于 2012-09-17 12:00:41

我的Android项目(它通过JNI使用本地代码第三方库)也出现了同样的问题。事实证明,在这种情况下,艾玛的错误信息有点误导人。这是由于在主机上静态生成的覆盖元数据(coverage.em)与设备(coverage.ec)上应用程序运行时收集的覆盖率数据不匹配而触发的。事实上,这不仅是一个“错配”,而且coverage.ec是完全缺失的。这是由于本机代码崩溃造成的:在Android上,本机代码崩溃也会关闭相关的Java进程,实际上甚至会重新启动VM。这意味着艾玛也被杀死了,而且它再也没有机会将coverage.ec文件刷新到磁盘上,这就是它丢失的原因。

我想知道让艾玛在坠机前更频繁地刷新coverage.ec文件是否有意义,但同样值得怀疑的是,不完整的覆盖信息是否有价值

  1. 文件格式可能不是以一种渐进解析的方式构建的,
  2. 一个局部coverage.ec仍然会错配一个完整的coverage.em,
  3. 从部分coverage.ec生成的覆盖率会报告套件中所有测试的错误覆盖率。

因此,长话短说,解决这一问题的最佳方法是修复您的本机代码以避免崩溃。

票数 0
EN

Stack Overflow用户

发布于 2014-11-10 08:24:30

我在android上使用艾玛的时候也遇到了这个问题。这是因为从sdcard中提取的coverage.ec与coverage.em不一致。尝试重新构建项目的仪器化版本。尝试以下步骤:

  1. 蚂蚁清洁释放
  2. 蚂蚁仪器
  3. 蚂蚁安装
  4. 亚行拉/mnt/sdcard/coverage.c
  5. 使用coverage.em (通过步骤2在项目bin文件夹下新生成)和coverage.ec生成覆盖报告

有关详细信息,您可以参考艾玛代表Android

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8981777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档