首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Powermock Mockito的@PrepareForTest在JaCoCo maven插件中没有给出正确的覆盖范围。有其他选择吗?

在JaCoCo maven插件中,如果Powermock Mockito的@PrepareForTest无法正确给出覆盖范围,可以考虑使用JaCoCo的exclude和include选项来手动指定需要覆盖的代码范围。

  1. 首先,需要在pom.xml文件中添加JaCoCo插件的配置:
代码语言:txt
复制
<build>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.7</version>
            <executions>
                <execution>
                    <id>prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>report</id>
                    <phase>test</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  1. 接下来,在插件配置中添加exclude和include选项来指定需要覆盖的代码范围。exclude用于排除不需要覆盖的代码,include用于指定需要覆盖的代码。
代码语言:txt
复制
<build>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.7</version>
            <executions>
                <execution>
                    <id>prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>report</id>
                    <phase>test</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <excludes>
                    <exclude>com/example/TestClass1</exclude>
                    <exclude>com/example/TestClass2</exclude>
                </excludes>
                <includes>
                    <include>com/example/TestClass3</include>
                    <include>com/example/TestClass4</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

在上述配置中,我们通过exclude排除了TestClass1和TestClass2,通过include指定了TestClass3和TestClass4需要覆盖。

  1. 运行测试时,JaCoCo插件将根据配置的exclude和include选项来计算代码覆盖率。

这样,通过手动配置exclude和include选项,可以解决Powermock Mockito的@PrepareForTest在JaCoCo maven插件中无法正确给出覆盖范围的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【测试左移专栏】用 PowermockMockito 来做安卓单元测试

测试选型:他职责决定了他很少去断言输入输出,测试逻辑覆盖路径是否正确即可,因此他与Android环境无关,用Junit+Mockito测试即可,代码存放于test。...4、增加Jacoco覆盖率 增加Jacoco插件: 指定版本号和报告目录: 指定源码目录。...单测过程可能会出现某些类覆盖率结果为0,但实际上应该有覆盖,这可能是由于一些页面单测场景下被测类@PrepareForTest声明了,导致这些类覆盖率为0。...以前作者也介绍过Jacoco原理,其是修改class字节码文件插桩,但再经过PrepareForTest这种指定后,PowerMock也会修改class字节码,这样就把Jacoco插桩冲掉了,导致覆盖率为...0,这部分我们可以通过自己写脚本方式来算覆盖率,然后Jacoco覆盖率相叠加算出总覆盖率。

3.7K00

junit4整合PowerMockito进行单元测试

junit4整合PowerMockito进行单元测试 一、介绍 单元测试,代码里面往往一些需要连接数据库、调用第三方远程代码。 由于没有环境,这些代码存在,会给单元测试造成影响。...所以我们单测,往往会使用mock方式对这些代码做一个数据模拟,从而达到对代码进行测试一个目的。...所以单测需要满足以下几点 可复用:单测代码可以重复执行 无环境:不要依赖数据库,第三方接口等外部环境依赖 方法级细粒度:单测代码应该针对具体一个方法测试, 高覆盖率:如果代码复杂度过高...,单测要覆盖到方法每一行代码 自动断言:每一段单测代码都应该有自己断言方法,而不是通过打印再人工查看正确性 所以我们就有了Mockito,它可以模拟对象,模拟对象方法返回值,来完成mock...插入前,我们根据entity.value是否值,给予entity.status值 ---- 故此,上面的代码需要连接数据库,我们单测时,直接对PowerMockitoMapper进行mock即可

66630

Spock单元测试框架以及美团优选实践

单元测试不仅仅是为了统计代码覆盖率,更重要是验证业务代码健壮性、业务逻辑严谨性以及设计合理性 项目初期阶段,可能为了追赶进度而没有时间写单元测试,或者这个时期写单元测试只是为了达到覆盖要求...覆盖Jacoco是统计单元测试覆盖一种工具,当然Spock也自带了覆盖率统计功能,这里使用第三方Jacoco原因主要是国内公司使用比较多一些,包括美团很多技术团队现在使用也是Jacoco...pom文件里引用Jacoco插件jacoco-maven-plugin,然后执行mvn package 命令,成功后会在target目录下生成单元测试覆盖报告,点开报告找到对应被测试类查看覆盖情况...绿色背景表示完全覆盖,黄色是部分覆盖,红色没有覆盖到。...插件、资源文件拷贝以及测试覆盖率统计插件

3.1K20

Spock单元测试框架以及美团优选实践

单元测试不仅仅是为了统计代码覆盖率,更重要是验证业务代码健壮性、业务逻辑严谨性以及设计合理性 项目初期阶段,可能为了追赶进度而没有时间写单元测试,或者这个时期写单元测试只是为了达到覆盖要求...覆盖Jacoco是统计单元测试覆盖一种工具,当然Spock也自带了覆盖率统计功能,这里使用第三方Jacoco原因主要是国内公司使用比较多一些,包括美团很多技术团队现在使用也是Jacoco...pom文件里引用Jacoco插件jacoco-maven-plugin,然后执行mvn package 命令,成功后会在target目录下生成单元测试覆盖报告,点开报告找到对应被测试类查看覆盖情况...绿色背景表示完全覆盖,黄色是部分覆盖,红色没有覆盖到。...插件、资源文件拷贝以及测试覆盖率统计插件

2.7K20

使用PowerMock进行单元测试

,这样能有效提高测试效率,并且其提供API能覆盖场景广泛,使用方便,可谓是Java单元测试之模拟利器。...测试部分邮政编码输入并检查邮政编码格式 测试空间/无空间 检查是否手动输入地址选项 5.5 系统接口: 这构成了多个应用程序系统之间传输字段一组条件。...状态/条件 检查是否按要求显示货币符号 验证没有重复记录。...所有字段均可用 字段应有足够空间 启用滚动和平移 页码指示报告大小(N个,共M个),并应允许访问报告/终点 报告已正确导出到Excel / Word文档 报告可以正确打印,所有数据正确显示 检查报告所有页面是否都可访问...验证电子邮件字体,大小和文本对齐是否正确 5.13 搜索条件: 本节包含对应用程序系统搜索功能一系列检查。

3.1K30

JAVA实战:如何让单元测试覆盖率达到80%甚至以上

单元测试目的是在于确保软件每个独立模块都被正确地测试,并且没有潜在缺陷或漏洞。单元测试,需要对每个模块进行测试,以确保它们能够按照预期方式工作,并且没有任何错误或漏洞。...单元测试通常包括以下几个步骤:确定测试范围开始测试之前,需要确定测试范围,即要测试功能或模块。编写测试用例:根据确定测试范围,编写测试用例,这些用例应该覆盖软件每个模块。...其他我们不多说了,直接进入实战操作,这次使用是springboot+Mockito框架,最后会指出一些小技巧和bug。实战一.Mockitojar包导入: org.jacocojacoco-maven-plugin...有的时候测试报告和idea扫描会有不同,需要以自己环境为准.idea插件:Squaretest,帮助自动生成单元测试类。选择第二种使用。注意:生成后需要修改,别忘了上面碰到问题。

3K20

玩花招PowerMock

由于它测试粒度较粗,可以以较少测试用例覆盖系统主要功能。然而,它缺点同样存在,那就是反馈周期相对较长。这就好像你置身一个陌生城市,找不到路情况下,只是跟着感觉走。...我选择PowerMock针对Mockito扩展: org.powermock powermock-api-mockito...使用PowerMock编写测试时,首先需要在测试类上运用框架提供Annotation:@PrepareForTest,以及一个Runner:PowerMockRunner。...我虽然没有看过PowerMock源代码,但我猜测,当我们使用PowerMock去Mock静态方法时,定然是结合反射与代理方式来完成对该方法调用,其中必然需要初始化该类。...我们开发中就碰到一种情形是,我们希望Mock一个类,定义了一个static块,其中又调用了私有的静态方法。在这个私有静态方法,依赖了其他一些对象,这些对象还牵扯到服务容器问题。

1.2K20

详解Android单元测试最佳实践

简介 Android原生应用开发,存在两种单元测试:本地JVM测试和Instrumentation测试。...Mockito-1.10.19 模拟被测对象依赖对象 配置build.gradle 增加编译选项,测试包含资源文件 testOptions { unitTests { includeAndroidResources...UI依赖于Persenter,Activity通过静态工厂方法创建依赖Presenter实例,需要使用PowerMock来模拟创建Presenter过程,完成Presenter模拟对象注入 配置...,也依赖上层View,demo对领域服务依赖没有通过构造函数方式注入,而是通过静态工厂方法构建,还是需要用到PowerMock 配置 通过@RunWith指定使用PowerMockRunner 通过...@PrepareForTest配置PowerMock需要模拟静态类型 @RunWith(PowerMockRunner.class) @PrepareForTest({ServiceFactory.class

2.4K31

powermockito教程_SpringBoot使用Powermockito单元测试

版本说明 一般powermockito和mockito配合来使用,相应版本要求。...powermock-module-junit4 2.0.0 test org.powermock powermock-api-mockito2 2.0.0 test mock静态方法 什么时候mock...比如一个类中有许多public方法,也有static方法,static方法调用static方法,但我们并不想mock静态方法任何代码,就需要给这个static方法mock一个返回值,mockito...mockito使用继承方式实现mock,用CGLIB生成mock对象代替真实对象进行执行,为了mock实例方法,你可以子类覆盖它,而static方法是不能被子类覆盖,所以mockito不能...如发现本站涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.4K20

PowerMock(一):PowerMock使用

如果项目中有mockito依赖还需要注意mockito版本与powermock版本对应关系,对应如下图:详细请参考Using PowerMock with Mockito,如果引入版本不匹配则可能会报如下错误...@InjectMocks 注解会主动将已存在mock对象注入到bean,按名称注入,这个注解修饰我们需要测试类上。必须要手动new一个实例,不然单元测试会有问题。...true : false; } 这里方法int i = userMapper.addUser(user); 入参,出参,没有关键字修饰,是一个普通方法,mock方式也很简单,就是PowerMockito.when...注解中指定,如本例@PrepareForTest({UserMapper.class})。...@PrepareForTest({ DateUtil.class}),其他与普通方法mock一样,再此就不在赘述了。

5.9K71

使用强大 Mockito 来测试你代码

单元测试思路是不涉及依赖关系情况下测试代码(隔离性),所以测试代码与其他类或者系统关系应该尽量被消除。...譬如说,你可以验证 Mock 对象某一个方法是否被调用。这可以确保隔离了外部依赖干扰只测试测试类。 我们选择 Mock 对象原因是因为 Mock 对象只需要少量代码配置。...添加mockito依赖 需要在 Maven 声明依赖,您可以 http://search.maven.org 网站搜索 g:"org.mockito", a:"mockito-core" 来得到具体声明方式...3.4 以OSGI或者Eclipse插件形式添加Mockito依赖 Eclipse RCP 应用依赖通常可以 p2 update 上得到。...()允许你检查没有其他方法被调用了。

10.4K60

Mockito模拟进行单元测试

写单元测试过程,我们往往会遇到要测试很多依赖,这些依赖类/对象/资源又有别的依赖,从而形成一个大依赖树,要在单元测试环境完整地构建这样依赖,是一件很困难事情。...   2 使用Mockito 添加maven依赖 org.mockito mockito-all</artifactId...; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest...注意这次调用:通过AopContext来获取当前代理类操作,但是当前单元测试并没有走spring生命周期,bean也没有交给spring进行管理,那么调用这个静态方法肯定是要报错,那么如何解决呢..."first" Mockito.when(mockedList.get(0)).thenReturn("first"); Mock对象时候,创建一个proxy对象,保存被调用方法名(get),以及调用时候传递参数

9.2K20

MockitoPowerMock用法

单元测试,我们往往想去独立地去测一个类某个方法,但是这个类可不是独立,它会去调用一些其它类方法和service,这也就导致了以下两个问题:外部服务可能无法单元测试环境中正常工作,因为它们可能需要访问数据库或者使用一些其它外部系统...一、mock测试和Mock对象 mock对象就是调试期间用来作为真实对象替代品 mock测试就是测试过程,对那些不容易构建对象用一个虚拟对象来代替测试方法就叫mock测试 二、Mockito...和PowerMock PowerMock是Java开发一种Mock框架,用于单元模块测试。...使用 PowerMock基于Mockito开发,起语法规则与Mockito一致,主要区别在于使用方面,以实现完成对private/static/final等方法(也支持mock对象是方法内部new...–@PrepareForTest( { YourClassWithEgStaticMethod.class }) // 如果你测试用例里没有使用注解@PrepareForTest

2.8K32

Mockito模拟进行单元测试

写单元测试过程,我们往往会遇到要测试很多依赖,这些依赖类/对象/资源又有别的依赖,从而形成一个大依赖树,要在单元测试环境完整地构建这样依赖,是一件很困难事情。...可以交给用户 隔离系统 2 使用Mockito 添加maven依赖 org.mockito mockito-all...; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest...最后方法也根据我们设定好数据进行了输出,并没有进行调用mysql操作:这样好处时在生产环境跑单元测试时也不会影响数据库数据 注意这次调用:通过AopContext来获取当前代理类操作..."first" Mockito.when(mockedList.get(0)).thenReturn("first"); Mock对象时候,创建一个proxy对象,保存被调用方法名(get),以及调用时候传递参数

6.8K20

spring junit单元测试

单元测试范围 一个项目需要实施单元测试,首先要界定(或者说澄清)单元测试负责范围。最常见疑惑就是与外部系统或者其他中间件关联,单元测试是否要实际调用其他中间件/外部系统。...我们理解就是说单元测试要保障是项目(代码片段逻辑)自身按照设计意图正确执行,所以确认了单元测试范围仅限于单个项目内部,因此要尽量屏蔽所有的外部系统或中间件。...代码业务逻辑覆盖80%-90%,其他部分(工具类等)不做要求。 我们项目涉及到了一些中间件(Mysql,Redis,MQ等),但是更多涉及到内部其他支撑系统。...目前, Java 阵营主要 Mock 测试工具有 Mockito,JMock,EasyMock 等。我们选择Mockito,这个是没有经过特别的选型。...依赖是Maven,以及maven-surefire-plugin插件

93660

#Android单元测试学习总结「建议收藏」

然后每个测试方法编写测试用例,这里使用org.junit.Assert包断言方法,很多assertXXX方法,可以自己选择用来判断目标方法结果是否满足预期。 2....传统JUnit单元测试没有消除测试对对象依赖,如A对象依赖B对象方法,测试A对象时候,我们需要构造出B对象,这样子增加了测试难度,或者使得我们对某些类测试无法实现。...,因此传递Mockito任何验证方法次数函数都可以,Mockito验证函数会返回是一个VerificationMode类型。..... arguments) PowerMockitowhen函数与Mockito相比,最大变化就是多了一些传递String类型methodName重载方法,这样使用上几乎无所不能了。...除了系统静态final类情况,其他情况下PowerMockito和Mockito可以同时依赖(我测试是没有问题)。

4.8K20

Android开发之逻辑单元测试

单元测试必要性 完整,规范单元测试有利于提升程序“自动化”验证 降低后期程序维护成本 高覆盖单元测试很大程度上能提前发现一些潜在bug 编写单元测试过程可以帮助程序模块化重构,一个耦合性非常高程序是无法针对他编写完善单元测试...纯代码逻辑单元测试,也就是Java单元测试,test目录下 目前我们项目中用junit + powermock这一套单元测试框架,选择powermock一个重要原因就是:现如今比较流行Mock...mock就是模拟,代码逻辑测试,有时候我们需要某一个方法返回我们指定值,这样才能跑我们预测代码逻辑,从而通过验证执行结果正确性来反映该代码逻辑是否问题,比如: /** * 开始处理同步通知任务...,先不用看方法命名规范性问题 对于android程序来说,很多时候代码里面可能会有android一些相关类,接口等,但是JUnit环境下,是没有这些环境,例如说Context,任何运行到android...,这样单元测试用例类中就能直接访问protected方法了 单元测试编写也可以“模块测试”与“集成测试”概念,比如说一个方法里面执行了6个子方法,我们可分别验证这6个子方法正确性,然后再验证这

1.3K10
领券