java - 如何在不使用 PowerMock 中的 PrepareFor 注释的情况下模拟私有(private)方法?

标签 java unit-testing gradle powermock jacoco

我正在尝试使用 JaCoCo 生成代码覆盖率报告。我的公司明确规定我只能使用 JaCoCo。不幸的是,有一个测试用例,我需要使用 PowerMock 来模拟私有(private)方法。所以我必须使用@PrepareFor 注释和@RunWith(PowerMockRunner.class) 注释。当我尝试使用 gradle clean build jacocoTestReport 在 gradle 中生成报告时,由于注释的原因,代码覆盖率并未涵盖此测试用例。
有解决方法吗?

最佳答案

你有两种方法:

  • 使用描述的离线 JaCoCo 工具 here .对于 Gradle 示例,您可能会找到 here
  • 尝试使用ByteBuddy并重新定义一个包含私有(private)方法的类并为该方法添加处理程序。 ByteBuddy 与 Javassist 不同,它使用已加载的、已由 JaCoCo 检测的类。
  • 关于java - 如何在不使用 PowerMock 中的 PrepareFor 注释的情况下模拟私有(private)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43670347/

    相关文章:

    java - 等待线程循环完成

    c# - 从 Java 迁移到 C#

    .net - VB.NET中的问题单元测试

    Android 用 dex 转换类进行调试

    spring-boot - 是否可以使用@SpringBootApplication main制作一个带有两个spring boot应用程序的胖子

    java - Spring Boot 安全调用 LDAP

    java - 文件保存在文件系统 VS 数据库中

    unit-testing - DAO 单元测试

    angular - 在单元测试中使用参数模拟 ngrx 存储选择器(Angular)

    android - 谷歌眼镜 : GDK with Android Studio