Spring Boot单元测试

一个测试类包含下面两个注解:
@RunWith(SpringRunner.class)
@SpringBootTest
测试类中可直接注入接口:
@Resource
MyServerMgr myServerMgr;
在方法上加@Test表示它是个测试方法:
@Test
public void query() {
 String result = myServerMgr.query();
 log.info("test query result is {}.", result);
 //使用断言判断结果
 assertEquals(result, "query result");
}
可以通过@Before和@After注解修饰的方法,来表示测试方法执行前和执行后的行为。
@Before
public void setUp() throws Exception {
 log.info("Before setUp.");
}
 
@After
public void tearDown() throws Exception {
 log.info("After tearDown.");
}
至此一个简单的单元测试就完成了。
 
Spring Mock MVC:模拟Servlet容器里的测试控制器。
下面部分介绍如何测试Spring Controller API。
Controller测试类需要额外增加@WebAppConfiguration注解:
@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
需要在测试类中注入WebApplicationContext:
@Resource
private WebApplicationContext webApplicationContext;
需要使用MockMvc模拟发送rest请求,所以需要定义MockMvc变量并在测试方法执行前初始化它:
 private MockMvc mockMvc;
 
 @Before
 public void setUp() throws Exception {
 log.info("set mockmvc");
 mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
// mockMvc = MockMvcBuilders.standaloneSetup(webApplicationContext).build();
 }

需要说明的是,Mock MVC有两种构建方式:

standaloneSetup:手工创建并配置的控制器。

webAppContextSetup:根据Spring应用程序上下文来构建Mock MVC。

我们采用webAppContextSetup方式。
 
使用@Test注解声明测试方法:
@Test
public void query() throws Exception {
 mockMvc.perform(get("/myapp"))
 .andExpect(status().isOk())
 .andExpect(content().string("query result"));
}

总结一下:

1、需要熟悉并掌握@RunWith(SpringRunner.class)、@SpringBootTest、@Before、@After、@Test几个注解的用法。
2、测试服务端接口和测试Controller的不同是Controller需要额外的加载上下文并初始化MockMvc,并通过MockMvc模拟发送rest请求,通过断言判定结果是否正确。

转载于:https://www.cnblogs.com/zjiuwei/p/9521072.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值