美文网首页
Springboot注解

Springboot注解

作者: 小七奇奇 | 来源:发表于2018-08-22 23:26 被阅读6次

一个测试类包含下面两个注解:

<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@RunWith(SpringRunner.class)
@SpringBootTest</pre>

测试类中可直接注入接口:

<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@Resource
MyServerMgr myServerMgr;</pre>

在方法上加@Test表示它是个测试方法:

[ 复制代码

](javascript:void(0); "复制代码")

<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@Test public void query() {
String result = myServerMgr.query();
log.info("test query result is {}.", result); //使用断言判断结果
assertEquals(result, "query result");
}</pre>

[ 复制代码

](javascript:void(0); "复制代码")

可以通过@Before和@After注解修饰的方法,来表示测试方法执行前和执行后的行为。

[ 复制代码

](javascript:void(0); "复制代码")

<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@Before public void setUp() throws Exception {
log.info("Before setUp.");
}

@After public void tearDown() throws Exception {
log.info("After tearDown.");
}</pre>

[ 复制代码

](javascript:void(0); "复制代码")

至此一个简单的单元测试就完成了。

Spring Mock MVC:模拟Servlet容器里的测试控制器。

下面部分介绍如何测试Spring Controller API。

Controller测试类需要额外增加@WebAppConfiguration注解:

<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration</pre>

需要在测试类中注入WebApplicationContext:

<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@Resource private WebApplicationContext webApplicationContext;</pre>

需要使用MockMvc模拟发送rest请求,所以需要定义MockMvc变量并在测试方法执行前初始化它:

[ 复制代码

](javascript:void(0); "复制代码")

<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;"> private MockMvc mockMvc;

@Before public void setUp() throws Exception {
log.info("set mockmvc");
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); // mockMvc = MockMvcBuilders.standaloneSetup(webApplicationContext).build();
}</pre>

[ 复制代码

](javascript:void(0); "复制代码")

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

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

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

我们采用webAppContextSetup方式。

使用@Test注解声明测试方法:

[ 复制代码

](javascript:void(0); "复制代码")

<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@Test public void query() throws Exception {
mockMvc.perform(get("/myapp"))
.andExpect(status().isOk())
.andExpect(content().string("query result"));
}</pre>

[ 复制代码

](javascript:void(0); "复制代码")

总结一下:

1、需要熟悉并掌握@RunWith(SpringRunner.class)、@SpringBootTest、@Before、@After、@Test几个注解的用法。

2、测试服务端接口和测试Controller的不同是Controller需要额外的加载上下文并初始化MockMvc,并通过MockMvc模拟发送rest请求,通过断言判定结果是否正确

相关文章

网友评论

      本文标题:Springboot注解

      本文链接:https://www.haomeiwen.com/subject/hqvuiftx.html