2024年软件测试最全SpringBoot 实战:JUnit5+MockMvc+Mockito 做好单元测试(1),2024年最新阿里P7大佬手把手教你

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

├── pom.xml

└── src

├── main

│   ├── java

│   │   └── cn

│   │   └── howardliu

│   │   └── effective

│   │   └── spring

│   │   └── springbootjunit5mockio

│   │   ├── SpringbootJunit5MockioApplication.java

│   │   ├── controller

│   │   │   └── EchoController.java

│   │   └── service

│   │   ├── EchoService.java

│   │   └── impl

│   │   └── EchoServiceImpl.java

│   └── resources

│   └── application.yaml

└── test

└── java

└── cn

└── howardliu

└── effective

└── spring

└── springbootjunit5mockio

└── controller

├── EchoControllerMockTest.java

└── EchoControllerNoMockitoTest.java

  • SpringbootJunit5MockioApplication:SpringBoot 应用启动入口

  • EchoController:接口定义

  • EchoService:实现业务逻辑接口

  • EchoServiceImpl:接口实现

  • EchoControllerMockTest:使用 Mock 代理 EchoService 实现

  • EchoControllerNoMockitoTest:直接测试接口实现

EchoServiceImpl

我们看下EchoService的实现,这将是我们 DEMO 的核心实现:

@Service

public class EchoServiceImpl implements EchoService {

@Override

public String echo(String foo) {

return "Hello, " + foo;

}

}

EchoControllerNoMockitoTest

我们先使用 Junit5+MockMvc 实现 Controller 接口的普通调用,代码如下:

@SpringBootTest(classes = SpringbootJunit5MockioApplication.class)

@AutoConfigureMockMvc

class EchoControllerNoMockitoTest {

@Autowired

private MockMvc mockMvc;

@Test

void echo() throws Exception {

final String result = mockMvc.perform(

MockMvcRequestBuilders.get(“/echo/”)

.param(“name”, “看山”)

)

.andExpect(MockMvcResultMatchers.status().isOk())

.andDo(MockMvcResultHandlers.print())

.andReturn()

.getResponse()

.getContentAsString(StandardCharsets.UTF_8);

Assertions.assertEquals(“Hello, 看山”, result);

}

}

我们通过SpringBootTest注解定义这是一个 SpringBoot 应用的测试用例,然后通过AutoConfigureMockMvc启动测试容器。这样,就可以直接注入MockMvc实例测试 Controller 接口。

这里需要注意一点,网上很多教程会让写@ExtendWith({SpringExtension.class})这样一个注解,其实完全没有必要。通过源码我们可以知道,SpringBootTest注解已经添加了ExtendWith

EchoControllerMockTest

这个测试用例中,我们通过 Mockito 组件代理EchoServiceecho方法,代码如下:

@SpringBootTest(classes = SpringbootJunit5MockioApplication.class)

@ExtendWith(MockitoExtension.class)

@AutoConfigureMockMvc

class EchoControllerMockTest {

@Autowired

private MockMvc mockMvc;

@MockBean

private EchoService echoService;

@BeforeEach

void setUp() {

Mockito.when(echoService.echo(Mockito.any()))

.thenReturn(“看山说:” + System.currentTimeMillis());

}

@Test

void echo() throws Exception {

final String result = mockMvc.perform(

MockMvcRequestBuilders.get(“/echo/”)

.param(“name”, “看山的小屋”)

)

.andExpect(MockMvcResultMatchers.status().isOk())

.andDo(MockMvcResultHandlers.print())

.andReturn()

.getResponse()

.getContentAsString(StandardCharsets.UTF_8);

Assertions.assertTrue(result.startsWith(“看山”));

}

}

在这个示例中,我们需要注意@ExtendWith(MockitoExtension.class)注解,这个注解是用于引入MockBean的,我们通过对echo方法的拦截,使其返回我们定义好的响应结果。这种方式是为了在多系统或者多功能测试时,不需要真正调用接口。

比如,我们需要获取用户手机号,通常在接口中会校验用户有没有登录,我们就可以使用 Mockito 的能力代理登录验证,使结果永远是 true。

文末总结


至此,我们完成了 SpringBoot 集成 Junit5、MockMvc、Mockito 的示例。想要获取源码,只需要关注公众号「看山的小屋」,回复"spring"即可。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

264599483)]
[外链图片转存中…(img-j8nz310t-1715264599483)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值