Cobertura 显示正确的覆盖范围,但在声纳中许多文件显示 0% 覆盖范围

2023-11-29

enter image description hereI have write multiple JUnit test classes for my project.The code covergae is 80% when I see it in Eclipse using cobertura plugin.But when I try to see my code coverage in Sonar it show only 35%.The reason behind this is that multiple classes have 0% coverage and some classes shows coverage.What is the main reason I don't know.Is it problem of sonar or there is some problem im my code beacuse somewhere I am using PowerMockito somewhere EasyMock and somewhere Mockito.

我附上了 cobertura 显示的覆盖范围快照和 Sonar 显示的覆盖范围快照。 请帮助我。

Thanks


PowerMockito 和代码覆盖率计算存在一个已知问题。无论如何,PowerMockito 应该很少使用。 Mockito 不提供 PowerMockito 提供的功能的原因主要是 Mockito 试图让您专注于良好的、可测试的代码(静态和最终代码不是)。 在我使用 PowerMockito 并且代码覆盖率计算不正确的几个地方,我编写了一个小 Reflection Util 类,它允许我从属性中删除 static 和 final 。完成此操作后,我可以像常规实例属性一样模拟属性,并且可以正确计算代码覆盖率。我对静态最终 Logger 日志属性执行此操作,例如,如下所示:

[...] @Mock private Logger logMock;[...]@Before public void initMocks() throws Exception { MockitoAnnotations.initMocks(this); [...] ReflectionUtils.setFinalStatic(MyClass.class.getDeclaredField("LOG"), logMock);

ReflectionUtils 类的代码我无法在这里发布,但可以在网上轻松找到示例。

附注顺便说一句,如果你有 80% 到 35% 的差距,这意味着你有 45% 的代码是静态的和/或最终的,在我个人看来,你的代码有一个很大的设计缺陷,你应该在之前修复它调整 Sonar 中的代码覆盖率测量...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cobertura 显示正确的覆盖范围,但在声纳中许多文件显示 0% 覆盖范围 的相关文章

  • Sonar 中的 javascript 代码覆盖率

    我是使用 Sonar 和插件进行 javascript 代码覆盖的新手 使用 Sonar 分析时 有哪些可能性可以找出 javascript 代码的质量 包括代码覆盖率 目前我正在使用 karma runner 它提供代码覆盖率报告 可以在
  • 无法在 Spring Boot 测试中模拟 persistenceContext

    我正在使用带有 Mockito 框架的 spring boot 测试来测试我的应用程序 存储库类 EntityManager 之一作为参考 我的班级如下所示 Repository Transactional Slf4j public cla
  • 模拟适用于 Android 的 AWS Amplify Auth API

    我的 Android 应用程序使用AWS Cognito 和 Amplify 身份验证开发工具包用于身份验证 我正在尝试为登录 注册流程编写 JUnit 测试用例 我正在使用 Mockito 框架来模拟类 我从登录开始 我的登录模型如下所示
  • SonarQube 5.1.1 加载项目存储库时发生读取超时错误

    在使用声纳运行器分析多模块项目时 我经常收到 读取超时 错误 我为 Jenkins 配置了 SonarQube 5 1 1 我们的项目是一种 Web 项目 我们有几个用于分析的声纳插件 如 web css java findbugs js
  • Sonarqube 未从 LCOV 检索我的 JavaScript 覆盖范围

    我有一个具有以下结构的应用程序 my application pom xml app scripts app js js 3rd party libs build node modules test 我已经创建了pom xml仅运行 Son
  • 使用 Lint 和 SonarQube 分析 Android 项目

    我真的 溢出 了试图让这些东西一起工作 我按照这里的指示进行操作 http docs sonarqube org display PLUG Android Lint Plugin http docs sonarqube org displa
  • 如何使用 PowerMock 模拟非静态方法

    我正在尝试模拟我的测试方法的内部方法调用 我的班级看起来像这样 public class App public Student getStudent MyDAO dao new MyDAO return dao getStudentDeta
  • Easymock isA 与 anyObject

    有什么区别 EasyMock isA String class and EasyMock anyObject String class 或提供的任何其他类别 在什么情况下你会使用其中一种而不是另一种 区别在于检查 Null 值 当 null
  • 为什么 @Bean 返回模拟工作但 @MockBean 在 Spring Boot 测试中跨线程保留 Mockito 状态时不起作用?

    我有一个 JMS Spring Boot 项目 我正在尝试与我的 JMS Listener 进行集成测试 并且我使用 mockito 模拟来模拟具有外部服务调用的 bean 在测试过程中 我遇到了一个问题Mockito when thenR
  • Mockito 匹配器和基元数组

    有了 Mockito 我想verify 方法调用byte 在它的参数列表中 但我没有找到如何写这个 myMethod byte 我只想要类似的东西anyByteArray 如何使用 Mockito 做到这一点 我会尝试any byte cl
  • 分析和衡量 R 代码中的技术质量:有类似于 SonarQube 的工具吗?

    一个简单的问题 有人知道是否存在类似于 sonarqube 的 R 代码工具吗 或者声纳库 我的意思是 一个用于分析代码技术质量的工具 而不仅仅是突出显示或语法格式 提前致谢 您可以使用lintr并将结果上传到声纳Qube 这里有一个例子
  • 我有什么理由应该嘲笑?

    我也是 Mockito 和 PowerMockito 的新手 我发现我无法使用纯 Mockito 测试静态方法 因此我需要使用 PowerMockito 对吗 我有一个非常简单的类 名为 Validate 使用这个非常简单的方法 publi
  • 项目级别的@PowerMockIgnore

    在 Maven 中运行时 我的 powermock 测试用例出现以下错误 java lang LinkageError loader constraint violation loader instance of org powermock
  • Powermockito 可以在非最终具体类中模拟最终方法吗?

    假设我有一个非最终具体类 具有如下所示的最终方法 public class ABC public final String myMethod return test test 可以嘲笑吗myMethod 调用时返回其他内容junit usi
  • PowerMockito 模拟单个静态方法并返回对象

    我想从包含 2 个静态方法 m1 和 m2 的类中模拟静态方法 m1 我希望方法 m1 返回一个对象 我尝试了以下方法 1 PowerMockito mockStatic Static class new Answer
  • Spring 中 Mockito 的间谍对象

    当我尝试在单元测试中监视对象时 我有一个例外 这是我的单元测试文件 RunWith SpringJUnit4ClassRunner class ContextConfiguration locations classpath spring
  • Sonarqube - 避免捕获通用异常

    声纳在捕获泛型类型时抱怨例外 但有时我们需要对所有 甚至尚未识别 异常类型进行一些常规异常处理 通过这次声纳检查的解决方案是什么 除非你调用一个抛出异常的方法Exception 无需捕获Exception 捕获您知道的异常 编译器会告诉您何
  • 是否可以从命令行告诉 Sonar 项目名称?

    我公司创建的每个项目都会在 Sonar 中使用新的命名约定 所以有些项目的名称是缩写的 有些项目的名称是驼峰式的 有些项目的名称只是带有空格的单词 如果我们能通过sonar runner a project name参数 那么这将让我们拥有
  • 使用 Retrofit2 和 Mockito 或 Robolectric 进行 Android 单元测试

    我可以测试 Retrofit2beta4 的真实响应吗 我需要 Mockito 或 Robolectic 吗 我的项目中没有活动 它将是一个库 我需要测试服务器是否正确响应 现在我有这样的代码并卡住了 Mock ApiManager api
  • SonarQube 进程已退出,退出值 [es]:137

    我想在我的 vps linux x86 64 debian 9 上安装声纳 但是当我执行这个 cdm sonar sh 控制台时 我有以下日志 Running SonarQube wrapper gt Wrapper Started as

随机推荐