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

这篇具有很好参考价值的文章主要介绍了单元测试之@Mock与@InjectMocks(一文搞懂)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

直接上代码文章来源地址https://www.toymoban.com/news/detail-740934.html

@Service
public class ThirdService {

    public Object getThirdUser(String userId) {
        return new Object();
    }
}

@Service
public class UserService {

    @Autowired
    private ThirdService thirdService;

    public Object getUser(String userId) {
        return thirdService.getThirdUser(userId);
    }
}

//测试UserService
@SpringBootTest
class UserServiceTest {

    //需要模拟的类(因为UserService中使用了这个类)
    @Mock
    private ThirdService thirdService;

    //要测试的类,使用@Mock修饰的对象
    //这时候userService对象中持有的thirdService变量就是模拟的对象了
    @InjectMocks
    private UserService userService;

    @Test
    public void testGetUser() {
        //设定行为返回数据,我们可以设定模拟对象的行为,当然也可以不设定
        //any代表任意参数,返回a对象
        Object a = new Object();
        when(thirdService.getThirdUser(any())).thenReturn(a);

        //执行被测试的方法,这时候内部调用的ThirdService就是模拟对象了,行为结果就是上面设置的
        Object abc = userService.getUser("abc");

        //验证结果
        assertEquals(a,abc);
    }

}

到了这里,关于单元测试之@Mock与@InjectMocks(一文搞懂)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java的单元测试-mock测试

    对于普通的方法,通常采用断言测试。 对于接口,需要使用mockMvc 对于未开发的功能,需要mockBean模拟一个业务bean java自身携带的工具类,也可以用于一些对抛出异常要求不高的业务或者存在全局异常的项目 另外有一个更加简单的写法,以assert开头 曾使用注入方式得到mockM

    2023年04月08日
    浏览(50)
  • 测试人必会的Python内置库:unittest.mock(单元测试mock的基础使用)

    unittest.mock是用于在单元测试中模拟和替换指定的对象及行为,以便测试用例更加准确地进行测试运行。例如对于以下代码,想要针对函数func_a写一个简单的单元测试: 但是这样的话,函数func_b和func_c的逻辑都需要一起测试,在单元测试中这明显是不合理的,对于想要测试的

    2024年02月01日
    浏览(43)
  • CompletableFuture的单元测试Mock

    在spring项目,假设我们有一个方法 我们对这个方法单元测试,大概率就直接写成: 这样会导致Completable的线程不运行,一直阻塞在红色箭头指示的地方: 等待线程执行完毕。然而线程并没有执行。 此时需要模拟并驱动异步线程的执行,因此需要这样写: 这样就mock了对Runn

    2024年02月09日
    浏览(31)
  • 单元测试之Power Mock

    一、简介 EasyMock、Mockito、jMock(单元测试模拟框架) 在有这些模拟框架之前,程序员为了编写某一个函数的单元测试,必须进行十分繁琐的初始化工作,以确保调用的接口或编写的代码得到预期的结果。单元测试模拟框架极大的简化了单元测试的编写过程,在被测试代码需要

    2023年04月08日
    浏览(35)
  • SpringBoot 使用Mock单元测试

    测试一般分为两种黑盒测试和白盒测试。         黑盒测试又称为 功能测试 或 数据驱动测试 ,测试过程中,程序看作成一个黑色盒子,看不到盒子内部代码结构。         白盒测试又称为 结构测试 或 逻辑驱动测试 ,测试过程中,程序看作一个透明盒子,能够看清

    2024年03月20日
    浏览(43)
  • Service层代码单元测试以及单元测试如何Mock

    接着上一篇文章:单元测试入门篇,本篇文章作为单元测试的进阶篇,主要介绍如何对Springboot Service层代码做单元测试,以及单元测试中涉及外调服务时,如何通过Mock完成测试。 现在项目都流行前后端代码分离,后端使用springboot框架,在service层编写接口代码实现逻辑。假设

    2023年04月08日
    浏览(47)
  • Go 单元测试之mock接口测试

    目录 一、gomock 工具介绍 二、安装 三、使用 3.1 指定三个参数 3.2 使用命令为接口生成 mock 实现 3.3 使用make 命令封装处理mock 四、接口单元测试步骤 三、小黄书Service层单元测试 四、flags 五、打桩(stub) 参数 六、总结 6.1 测试用例定义 6.2 设计测试用例 6.3 执行测试用例代码

    2024年04月22日
    浏览(35)
  • Go语言测试——【单元测试 | Mock测试 | 基准测试】

    作者 :非妃是公主 专栏 :《Golang》 博客主页 :https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 软件测试 :软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测

    2024年02月10日
    浏览(56)
  • 单元测试之Stub和Mock

    Analyze类会检查filename的长度,如果小于8,我们就会使用一个实现IWebService的类来记录错误. 我们需要给Analyze方法写单元测试。 如果你想学习性能测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可

    2024年01月17日
    浏览(32)
  • 单元测试 Mock 对象为null

    场景:单元测试mock对象,执行时为null或值不符。 单元测试中mock方法并doReturn了mock数据,但是实际的方法在后面使用的参数却是null。 断点调试后发现调用方法前和在方法中的对象的id并非一个; 重复浏览调用代码,发现问题在于单测中重复mock一个方法,doReturn的mock数据被覆

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包