【问题标题】:Emma com.vladium.emma.EMMARuntimeException: [CLASS_STAMP_MISMATCH]艾玛 com.vladium.emma.EMMARuntimeException:[CLASS_STAMP_MISMATCH]
【发布时间】:2012-01-24 03:47:22
【问题描述】:

好吧,艾玛要杀了我。我已经花了两天时间。

Emma 现在有两个问题

  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=进程崩溃。 [执行] INSTRUMENTATION_CODE:0

不过,我确实希望看到我的报道结果。

我试过了:

  1. 清洁设备
  2. 清除了整个工作区(在 Jenkins 中)
  3. 使用命令提示符(绕过 jenkins、ant clean、ant emma debug install test)

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

我可以确认这在我的情况下是不可能的,因为我清理、清理甚至清除了整个工作空间和手机内存。现在对我来说没有任何意义。

请帮忙~

我正在使用 Android sdk r16、NDK 5c 以及 Ant 和 Emma 的默认设置。

【问题讨论】:

    标签: emma runtimeexception


    【解决方案1】:

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

    我想知道在崩溃之前让 EMMA 更频繁地刷新 coverage.ec 文件是否有意义,但同样值得怀疑的是,不完整的覆盖信息会有多大价值

    1. 文件格式可能只是没有以一种对增量解析有意义的方式构建,
    2. 部分coverage.ec 仍会与完整coverage.em 不匹配,
    3. 从部分coverage.ec 生成的coverage 将报告关于套件中所有测试的错误覆盖率。

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

    【讨论】:

      【解决方案2】:

      我在使用 EMMA for android 时也遇到了这个问题。这是因为您从 sdcard 中提取的 coverage.ec 与 coverage.em 不一致。尝试重建项目的检测版本。 请尝试以下步骤:

      1. ant clean 发布
      2. 蚂蚁仪器
      3. 蚂蚁安装
      4. adb pull /mnt/sdcard/coverage.ec
      5. 使用coverage.em(通过步骤2在项目的bin文件夹下新生成)和coverage.ec生成覆盖率报告

      您可以参考EMMA for Android了解详细信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多