Android Studio覆盖率报告未在带注释的方法上运行

Android Studio覆盖率报告未在带注释的方法上运行,android,android-studio,annotations,robolectric,powermockito,Android,Android Studio,Annotations,Robolectric,Powermockito,我已经为单元测试建立了一个Android库项目。为了支持有效的测试,我在设置中包括了Robolectric和PowerMockito。这一过程通常进展顺利,直到我注意到使用Android Studio的内置工具运行覆盖率报告时出现了一些奇怪的行为 库项目正在使用自定义注释,以方便面向方面的日志记录。它有一个保留类的策略,以便在编译时将其编织到类中,可用的目标是构造函数和方法(虽然我们只在插入方法方面取得了成功) 关于这个特殊配置的某些内容导致Android Studio完全跳过任何带有这个特殊注

我已经为单元测试建立了一个Android库项目。为了支持有效的测试,我在设置中包括了Robolectric和PowerMockito。这一过程通常进展顺利,直到我注意到使用Android Studio的内置工具运行覆盖率报告时出现了一些奇怪的行为

库项目正在使用自定义注释,以方便面向方面的日志记录。它有一个保留类的策略,以便在编译时将其编织到类中,可用的目标是构造函数和方法(虽然我们只在插入方法方面取得了成功)

关于这个特殊配置的某些内容导致Android Studio完全跳过任何带有这个特殊注释的方法的覆盖率收集。以下是我迄今为止所尝试的:

-删除注释(覆盖率报告有效,显然日志记录无效)

-将注释的保留策略更改为源(覆盖率报告有效,中断面向方面的日志记录)

-将代码覆盖率方法从“采样”更改为“跟踪”(无效)

-将覆盖范围从Intellij IDEA更改为JaCoCo(无效)

-已从注释中删除构造函数目标(无效)


如您所见,我提出的唯一重新启用覆盖率的解决方案也使注释中性化。诚然,我只是半心半意地尝试切换到JaCoCo(我只是在build.gradle中更改了coverage runner并将TestCoverage Enabled设置为true,我读过的可能还不够)。还有其他想法吗?这不一定是一个交易破坏者,因为测试确实在运行,但如果有一个准确的覆盖率报告就好了。

非常感谢我问题中的评论者。我们的面向方面的日志代码松散地基于。允许注入跟踪日志的插件未在不可调试的构建变体上运行


我在库的build.gradle文件中添加了一行类似的代码,并将构建变量切换为“release”。Intellij的IDEA coverage report成功地开始生成它以前跳过的代码的覆盖率信息。

您使用什么库进行日志记录?干扰测试的特定日志记录实际上只针对开发人员,并写入Logcat。它松散地基于一个叫做Hugo的面向方面的解决方案:看起来像已经报道过的,所以我不是疯了!谢谢你查到了!您是否尝试获取版本构建类型的覆盖率?我想这应该行得通