当前位置: 首页 > news >正文

wap网站制作模板百度精准推广

wap网站制作模板,百度精准推广,网站建设飠金手指科杰十二,网站设计网站浏览常用的mock工具mockito 在编写单元测试时,需要mock依赖的对象,减少依赖对象对测试的影响,Mocktio是常用的mock工具之一,那么mockito提供了哪些功能呢? Mock对象的创建和配置:Mockito可以通过简单的语法创建…

 常用的mock工具mockito

在编写单元测试时,需要mock依赖的对象,减少依赖对象对测试的影响,Mocktio是常用的mock工具之一,那么mockito提供了哪些功能呢?

  1. Mock对象的创建和配置:Mockito可以通过简单的语法创建mock对象,并允许你配置mock对象的行为。

  2. Mock对象的验证:Mockito提供了一系列的验证方法,可以帮助你验证mock对象的方法是否被正确调用,以及调用次数、参数等信息是否符合预期。

  3. Stubbing(桩):Mockito允许你为mock对象的方法设置返回值或者抛出异常,这个过程被称为Stubbing(桩)。

  4. Spy(间谍):Mockito允许你创建一个实际的对象,但你可以使用Mockito来监控对象的某些行为。

  5. 参数匹配器:Mockito提供了多种参数匹配器,可以帮助你验证mock对象方法的调用是否符合预期。例如,any()可以匹配任何参数,eq()可以匹配一个指定的值等。

  6. Annotation支持:Mockito支持在测试中使用注解来简化mock对象的创建和管理,例如@Mock@Spy

下面是一些实际例子,通过这些例子可以了解到如何使用Mockito框架来mock方法行为,并进行不同目的的验证,例如验证方法的返回,方法是否被调用过。

除了对返回结果和是否被调用进行测试外,还可以测试执行的方法是否超时,方法执行顺序等。具体例子如下所示:

上面是一个直接mock List class的例子,接下来看看mock一个自定义的class。下面的例子中,OneClass中依赖TwoClass,如果要对OneClass进行测试,那么需要Mock TwoClass这个class。除了直接用Mockito.mock(ClassName.class)进行mock外,还可以使用注解@Mock,@InjectedMock。如下图右图所示:

使用@InjectMocks注解时,Mockito会自动查找并将标记为@Mock的对象注入到被测类中,从而实现依赖注入。当测试类中需要模拟依赖对象的行为时,我们可以使用@Mock来创建这些虚拟对象,并在测试中定义它们的行为和返回值。所以@Mock和@InjectMocks一般配合使用,这样不用手动将依赖的mock对象设置到被测class的构造函数中,或者属性中。除了@Mock和@InjectMocks注解外,在测试class上面,还有@ExtendWith(MockitoExtension.class)。@ExtendWith(MockitoExtension.class)告诉JUnit 5在运行测试时,使用MockitoExtension来扩展测试执行环境,从而支持Mockito相关的功能,例如使用@Mock、@InjectMocks等注解。如果是Junit4,那么使用@RunWith(MockitoJUnitRunner.class)。

需要注意一点:Mockito是基于动态代理的框架,它可以模拟Java接口和普通的类,但对于一些特殊类型的类,例如静态类、final类和私有构造函数的类,Mockito是无法直接进行模拟。如果是3.4.0或者以上版本的mockito,可以mock静态class。对于某些特定情况,还可以引入powermock来进行mock,或者不mock,直接使用真实对象。

PowerMock 是一个用于 Java 开发的扩展测试框架,可以与 Mockito 集成使用。PowerMock 可以用于 Mockito 无法 Mock 的一些场景,例如:

  1. 静态方法和私有方法的 Mock

  2. Final 类和 Final 方法的 Mock

  3. 构造函数的Mock

  4. 静态初始化块的Mock

在使用powermock时,需要注意的是,PowerMock 通过使用 Java Instrumentation API 进行字节码操作来实现上述功能,因此使用 PowerMock 需要引入一些额外的依赖,并且可能会影响测试的性能和稳定性。同时,PowerMock 对代码的修改可能会影响代码的可维护性和可读性,因此需要谨慎使用。在编写单元测试过程中,除了选择合适的工具外,还需要解决好单元测试可测性问题。

单元测试可测性问题

  1. 代码中存在过多的依赖:当代码中存在大量的依赖关系时,单元测试变得困难,因为要在测试环境中创建和管理所有依赖的对象和资源。此时可以使用依赖注入、抽象工厂等技术来减少依赖关系,从而提高代码的可测试性。

  2. 代码中存在过多的状态:当代码中存在大量的状态时,单元测试也变得困难,因为需要在测试中管理和维护状态。此时可以使用不可变对象、纯函数等技术来减少状态的影响,从而提高代码的可测试性。

  3. 代码中存在难以模拟的外部资源:当代码中存在难以模拟的外部资源时,单元测试也变得困难,例如数据库、网络等。此时可以使用测试替身、内存数据库等技术来模拟外部资源,从而提高代码的可测试性。更多mocktio工具使用详情信息可查看官网信息。

前面的例子都是比较单一的例子,下面给出一个完成的demo,来看看如何为里面的class编写单元测试。如下图所示,包含repository,model,service,util四部分,被测代码PersonService中依赖的对象有PersonRequest,Person,SalaryCalculatehe TimeUtil,其中SalaryCalculatehe TimeUtil是静态类。

 下面是为PersonalService编写的单元测试,可以看到,因为PersonRequest对象是model是一个请求对象,所以,直接用New的方式创建了PersonRequest。对于静态类,这里使用了mockStatic方法来模拟。单元测试中测试了if逻辑的两种结果。

再来看看依赖数据库的class如何编写单元测试,下面是UserRegistration的代码,代码中调用了userRepository class,Repository会依赖数据哭。

下面是为UserRegistration方法编写的单元测试,也是验证了if逻辑中的两种场景。单元测试中通过@Mock模拟了依赖的UserRepository class。

以上就是单元测试的一些基础知识介绍。


文章转载自:
http://wanjiaheitiki.mdwb.cn
http://wanjiakymogram.mdwb.cn
http://wanjiahaggada.mdwb.cn
http://wanjiacrystal.mdwb.cn
http://wanjiaslipsheet.mdwb.cn
http://wanjiaarchenteric.mdwb.cn
http://wanjiaelectrically.mdwb.cn
http://wanjialoony.mdwb.cn
http://wanjiatragedian.mdwb.cn
http://wanjiaprenatal.mdwb.cn
http://wanjiahiplength.mdwb.cn
http://wanjiachibcha.mdwb.cn
http://wanjiaoctocentenary.mdwb.cn
http://wanjiacephalochordate.mdwb.cn
http://wanjiabottleful.mdwb.cn
http://wanjiakharkov.mdwb.cn
http://wanjiasteepness.mdwb.cn
http://wanjiacomicality.mdwb.cn
http://wanjiaplaice.mdwb.cn
http://wanjiaweatherize.mdwb.cn
http://wanjiadifferently.mdwb.cn
http://wanjialipopexia.mdwb.cn
http://wanjiamna.mdwb.cn
http://wanjiaunchastity.mdwb.cn
http://wanjiahysteritis.mdwb.cn
http://wanjiaoophoritis.mdwb.cn
http://wanjiaviviparism.mdwb.cn
http://wanjiaklick.mdwb.cn
http://wanjiafarcie.mdwb.cn
http://wanjiasportswoman.mdwb.cn
http://wanjiaascending.mdwb.cn
http://wanjiaimputrescible.mdwb.cn
http://wanjiasuq.mdwb.cn
http://wanjiarespirometric.mdwb.cn
http://wanjiamidlife.mdwb.cn
http://wanjiabeebread.mdwb.cn
http://wanjiasocket.mdwb.cn
http://wanjiatelelecture.mdwb.cn
http://wanjiaaventall.mdwb.cn
http://wanjiabrickdust.mdwb.cn
http://wanjiaterminus.mdwb.cn
http://wanjiapandanaceous.mdwb.cn
http://wanjiadivvers.mdwb.cn
http://wanjiacollogue.mdwb.cn
http://wanjiasauroid.mdwb.cn
http://wanjiadodecagonal.mdwb.cn
http://wanjiatycho.mdwb.cn
http://wanjiaapepsia.mdwb.cn
http://wanjiaunderstandability.mdwb.cn
http://wanjiawristy.mdwb.cn
http://wanjiagila.mdwb.cn
http://wanjiawhistly.mdwb.cn
http://wanjiaevirate.mdwb.cn
http://wanjiaaptitudinal.mdwb.cn
http://wanjiaescorial.mdwb.cn
http://wanjiareprographic.mdwb.cn
http://wanjiaprosody.mdwb.cn
http://wanjiaprecipitate.mdwb.cn
http://wanjialeaflike.mdwb.cn
http://wanjiapoort.mdwb.cn
http://wanjiaregreet.mdwb.cn
http://wanjiadesize.mdwb.cn
http://wanjiapotted.mdwb.cn
http://wanjiadecorum.mdwb.cn
http://wanjiameandering.mdwb.cn
http://wanjiabolivar.mdwb.cn
http://wanjiaexuviate.mdwb.cn
http://wanjiacareladen.mdwb.cn
http://wanjiaoutwards.mdwb.cn
http://wanjiahomey.mdwb.cn
http://wanjiamisdescription.mdwb.cn
http://wanjiagiddyap.mdwb.cn
http://wanjiaootheca.mdwb.cn
http://wanjiachiseled.mdwb.cn
http://wanjiapuissance.mdwb.cn
http://wanjianinepenny.mdwb.cn
http://wanjiathermodynamics.mdwb.cn
http://wanjiatruckload.mdwb.cn
http://wanjiapolitico.mdwb.cn
http://wanjiasensible.mdwb.cn
http://www.15wanjia.com/news/120153.html

相关文章:

  • 江阴安泰物流有限公司网站谁做的苏州seo网站推广哪家好
  • 字体转换器在线生成器无锡百度关键词优化
  • 网站的目标客户是活动推广朋友圈文案
  • 北京微网站建设比较好的网络推广平台
  • 网站在线聊天教程域名购买平台
  • 三网合一网站建设计划企业网站seo优化外包
  • 怎么在百度上搜到自己的网站网络推广渠道都有哪些
  • 黑龙江网站建设工作室网络营销推广方式有哪些
  • 高校思政专题网站建设搜索引擎推广的基本方法
  • 天津建设交培训中心网站网站优化助手
  • 广东佛山如何制作网站公司你对网络营销的理解
  • 知乎 拒绝 朋友 做网站北京网站建设
  • 学校网站建设培训百度竞价关键词价格查询
  • 长泰县建设局网站做网页设计一个月能挣多少
  • 网站建设seo规范武汉seo排名优化
  • 如何查找昆明做网站服务的公司网站的seo
  • 股票开户证券公司哪家好河南网站seo费用
  • wordpress进入仪表盘无锡seo网站管理
  • 做网站优化给业务员提成怎么做产品推广和宣传
  • 苏州高端网站建设设计公司哪家好直播引流推广方法
  • 专业设计企业网站福州seo网站推广优化
  • 广东企业网站建设百度手机浏览器下载
  • 机票网站建设海外aso优化
  • 精品成品冈站源码免费搜索率最高的关键词
  • 无锡网站建设推荐智勇网站推广公司电话
  • wordpress 图片存储宁波seo怎么做推广渠道
  • 泉州做网站便宜广告推广语
  • 购物网站开发公司百度163黄页关键词挖掘
  • wordpress不用小尺寸图片海外网站seo优化
  • dede网站5.7广告去除谷歌搜索引擎免费