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

百度收录网站标题建设通网站是什么网站

百度收录网站标题,建设通网站是什么网站,服装公司名字大全,中铁航空港建设集团网站Springboot单元测试 - 依赖类mock测试 通常单元测试中,我们会隔离依赖对于测试类的影响,也就是假设所有依赖的一定会输出理想结果,在测试中可以通过Mock方法来确保输出结果,这也就引入另一个测试框架Mockito。 Mockito框架的作用…

Springboot单元测试 - 依赖类mock测试

通常单元测试中,我们会隔离依赖对于测试类的影响,也就是假设所有依赖的一定会输出理想结果,在测试中可以通过Mock方法来确保输出结果,这也就引入另一个测试框架Mockito。

Mockito框架的作用就是模拟接口功能,并不运行模拟接口的实际逻辑,而是直接输出一个假定结果。

Mockito常见注释及方法

@Mock被注释的对象会作为Mock对象
@InjectMocks被注释的对象依赖于@Mock的对象,通常是测试对象
when(<MockObject>.<method>).thenReturn()对@Mock的对象进行模拟输出
doThrow(<Exception>).when(<mockObject>).<Method>对Mock的对象模拟抛出一个异常
spy()也是建立一个模拟对象,但可以

待测试类 - AController

public class AController {@AutowiredMongoService mongoService;public boolean testBean() {boolean res = mongoService.testMethod2(4);return res;}}

依赖类 - MongoService

@Service
public class MongoService {public void output() {System.out.println("This is a bean!!");}public boolean testMethod1(int num) {return num > 0;}public boolean testMethod2(int num) {int val = getVal();return val > num;}private int getVal() {return 2;}
}

Mockito测试类 - RunWith需要运行MockitoJUnitRunner.class才能使用Mockito相关注解

方法1: 使用@Mock,更为简洁只需加入注解就可以mock对应成员变量 (该成员变量可以是非依赖注入)

@RunWith(MockitoJUnitRunner.class)
public class MockTest {@MockMongoService mongoService;@InjectMocksAController aController;@Testpublic void testMock1() {when(mongoService.testMethod2(Mockito.anyInt())).thenReturn(true);Assert.assertEquals(aController.testBean(), true);}@Test(expected = Exception.class)public void testMock2() {doThrow(Exception.class).when(mongoService).testMethod2(Mockito.anyInt());aController.testBean();}
}

方法2: 使用Mock函数

public class MockTest {MongoService mongoService;AController aController;@BeforeEachpublic void init() {mongoService = Mock(MongoService.class);aController = new AController();/* 假设 AController class 中有setter用于加载mongoService */aController.setMongoService(mongoService);}@Testpublic void testMock1() {when(mongoService.testMethod2(Mockito.anyInt())).thenReturn(true);Assert.assertEquals(aController.testBean(), true);}@Test(expected = Exception.class)public void testMock2() {doThrow(Exception.class).when(mongoService).testMethod2(Mockito.anyInt());aController.testBean();}
}

 

@Mock 和 @Spy区别

上面两种注释都是建立一个模拟对象,但是区别是@Mock注释的对象是完全虚拟,不能调用这个Mock对象的任何方法,只能通过when().thenReturn() 来进行模拟输出;但是@Spy是建立一个真实的Mock对象,可以调用对象中任何方法也可以模拟某些方法的输出。@Spy大大增加了测试的自由度,比如如果某个测试类你只想模拟某个方法但是想要某些方法的真实输出,这是@Spy就可以解决这个问题。

举例 - 模拟MongoService其中一个方法,并测试另一个方法真实输出

    @SpyMongoService mongoServiceSpy;@Testpublic void testSpy() {/** 模拟MongoService中 getVal并测试testMethod2*/when(mongoServiceSpy.getVal()).thenReturn(3);Assert.assertEquals(mongoServiceSpy.testMethod2(2), true);}

Reference

  • SpringBoot Test及注解详解 - codedot - 博客园
  • 单元测试之Mockito与PowerMock - 简书

http://www.yayakq.cn/news/700698/

相关文章:

  • 温州阀门外贸网站建设成都设计公司尹超简历
  • 郑州做网站推广地址三维家
  • 机械设备 东莞网站建设招远网站建设招聘
  • 免费做链接的网站吗腾讯云申请域名
  • 网站内页301设置图片
  • 闲鱼网络营销方式关键词排名优化易下拉稳定
  • 企业网站app长宁青岛网站建设
  • 企业官方网站建设目的和淘宝同时做电商的网站
  • 昆山建设银行网站首页阿里指数官方网站
  • 河南广告制作公司网站tp做网站
  • 宽屏网站模板网站的设计路线
  • 中国建设人才网信息网站access数据库网站开发
  • 网站后台管理系统 asp婚纱摄影网站
  • 网站建设费放什么科目建设网站构成
  • 蚌埠网站建设哪家好山西小城故事网站建设
  • 建设银行网站怎么打印明细单页面销售信网站赚钱系统
  • 免费网站建设专业服务平台做餐饮要看的网站
  • 建设网站公司中运动鞋网页ui设计
  • wordpress安装网站源码seo推广名词解释
  • 沧州网站建设选网龙搜易网服务内容
  • 网站意义做网站的域名和空间是什么意思
  • 营销型网站多少钱wordpress支付宝扫码支付
  • 小白网站建设教程企业网站管理
  • 专业网站制作公司名称建好的网站怎么用
  • 蓝色门户网站网站建设 成都今网科技
  • 马克 扎克伯格大学做的网站搜索微信公众号平台
  • iis7架设网站教程网站能实现什么功能
  • 邢台网站制作公司哪家专业杭州红房子妇科医院
  • 网站运营一个月多少钱wordpress本地上传视频资料
  • 自己做视频网站可以吗wordpress 项目