Spring Boot测试打桩-Mockito在Spring Boot中的常见测试场景

本文主要分析Mockito在Spring Boot测试中的应用;
关于Spring Boot基本测试场景及说明可以参考此文
本文基于Spring Boot+Kotlin实现相关示例,工程源代码: https://github.net/icarusliu/learn
所有关于本文描述的测试入口均在类:TestLearninterceptorApplication中。

0 概述

Mockito用于测试时进行打桩处理;通过它可以指定某个类的某个方法在什么情况下返回什么样的值。
一般在单元测试时,只需要关注当前正在测试的类;但这个测试类可能会使用到多个其它类,如本文示例中TestController2类使用了TestService;TestService的类的测试应该在其本身的单元测试类中进行,而在测试TestController2时,应当尽量避免TestService带来各种影响,否则随着引用类的增加,测试场景会越来越复杂。这个时候就可以假设TestService在某些场景下会返回某些值,从而来降低引用类所带来的测试复杂度增加的影响。Mockito就用于这种场景。

Mockito常用测试场景描述如下:
- 指定打桩对象的返回值
- 判断某个打桩对象的某个方法被调用及调用的次数
- 指定打桩对象抛出某个特定异常

Mockito的使用,一般有以下几种组合:
- do/when:包括doThrow(…).when(…)/doReturn(…).when(…)/doAnswer(…).when(…)
- given/will:包括given(…).willReturn(…)/given(…).willAnswer(…)
- when/then: 包括when(…).thenReturn(…)/when(…).thenAnswer(…)
关于各个用法详见后续描述。

本文示例中测试的对象包括TestController2/TestService; 具体实现见GITHUB工程; 其中TestController2的testService方法中,包含对TestService对象的test方法调用:

@RequestMapping("/service")
@Throws(Exception::class)
fun testService(): String {
    return testService.test("test")
}

TestService的test方法实现如下:

@Throws
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值