小编gol*_*992的帖子

Kotlin JaCoCo,没有覆盖 -> IllegalClassFormatException ...请提供原始的非检测类

科特林版本: 1.3.61

Android Gradle 插件: 3.5.3

JaCoCo 版本: 0.8.4.201905082037(默认 android gradle 版本)

项目:https : //github.com/goldy1992/Mp3Player/tree/feature/issue-112/migrate-to-kotlin

我有一个多模块 gradle 项目:2 种风格:完整、自动化 2 种构建类型:发布、调试

我正在将所有内容迁移到 kotlin。

模块结构

  • commons [android library](在测试覆盖范围内按预期工作)
  • client-test-support(用于活动的测试实现)
  • 客户端 [android 库](无覆盖)-> 取决于公共资源,客户端测试支持
  • service-test-support(用于活动的测试实现)
  • 服务 [android 库](无覆盖)-> 取决于公共资源,服务测试支持
  • 应用程序 [android 应用程序] 没有测试

对于这篇文章的上下文,我只对单元测试感兴趣

测试按预期运行,但是由于某些(不是全部)kotlin 编译类被识别为“检测类”,因此没有生成覆盖率

错误出现在测试即将进行时,许多类都打印出以下内容:

    java.lang.instrument.IllegalClassFormatException: Error while instrumenting com/github/goldy1992/mp3player/client/views/viewholders/MediaPlayerTrackViewHolder.
        at org.jacoco.agent.rt.internal_035b120.CoverageTransformer.transform(CoverageTransformer.java:93)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at …
Run Code Online (Sandbox Code Playgroud)

android code-coverage gradle jacoco kotlin

12
推荐指数
2
解决办法
3674
查看次数

标签 统计

android ×1

code-coverage ×1

gradle ×1

jacoco ×1

kotlin ×1