0


单元测试之@Mock与@InjectMocks(一文搞懂)

@Mock与@InjectMocks一般搭配组合使用,是单元测试必不可少的注解

@Mock:需要模拟的类,我们需要模拟哪些类,就用它修饰哪些类的变量,常用于第三方服务service
@InjectMocks:要测试的类,使用@Mock修饰的对象,就是我们测试哪个类,就用它修饰对应的变量,会整合使用@Mock修饰的对象

直接上代码

@ServicepublicclassThirdService{publicObjectgetThirdUser(String userId){returnnewObject();}}@ServicepublicclassUserService{@AutowiredprivateThirdService thirdService;publicObjectgetUser(String userId){return thirdService.getThirdUser(userId);}}//测试UserService@SpringBootTestclassUserServiceTest{//需要模拟的类(因为UserService中使用了这个类)@MockprivateThirdService thirdService;//要测试的类,使用@Mock修饰的对象//这时候userService对象中持有的thirdService变量就是模拟的对象了@InjectMocksprivateUserService userService;@TestpublicvoidtestGetUser(){//设定行为返回数据,我们可以设定模拟对象的行为,当然也可以不设定//any代表任意参数,返回a对象Object a =newObject();when(thirdService.getThirdUser(any())).thenReturn(a);//执行被测试的方法,这时候内部调用的ThirdService就是模拟对象了,行为结果就是上面设置的Object abc = userService.getUser("abc");//验证结果assertEquals(a,abc);}}
标签: java

本文转载自: https://blog.csdn.net/weixin_39222112/article/details/132585987
版权归原作者 大魔王King 所有, 如有侵权,请联系我们删除。

“单元测试之@Mock与@InjectMocks(一文搞懂)”的评论:

还没有评论