当前位置: 首页 > 测试 > 正文

基于 Maven 的Spring Boot 工程的Unit Test 配置

目 录
 [ 隐藏 ]

基于 Maven 的Spring Boot 工程的Unit Test 配置

 

1. 使用一个pojo,用注解的方式配置Spring test 的context 

import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.FilterType; 
import org.springframework.transaction.annotation.EnableTransactionManagement; 

@ComponentScan( 
value = { "com.jack.yin.test"}, 
excludeFilters = @ComponentScan.Filter( 
type=FilterType.REGEX, 
pattern = {"com.jack.yin.test.server.*"}) 
) 
@EnableAutoConfiguration() 
@EnableTransactionManagement 
public class SpringRootContextConfigForTest { 
} 

2. 配置一个普通类单元测试的基类,其他测试类可以继承该类,省略一些通用配置 

@Transactional 配置使得单元测试与数据交互式不会污染数据,测试完成之后,自动会滚对数据的修改。 

@ContextConfiguration 引入Spring Context配置 

@Ignore 忽略该类,表示该类中不包含test case,测试时忽略 

import org.junit.Ignore; 
import org.junit.runner.RunWith; 
import org.springframework.boot.test.context.SpringBootTest; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
import org.springframework.transaction.annotation.Transactional; 

@Ignore 
@RunWith(SpringJUnit4ClassRunner.class) 
@SpringBootTest 
@ContextConfiguration(classes=SpringRootContextConfigForTest.class) 
@Transactional(rollbackFor=Exception.class,readOnly = true) 
public class CommonTest { 
} 

3. Mvc中Controller的测试基类 

加上@WebAppConfiguration注解,引入WebApp相关依赖。 

WebApplicationContext是Spring测试框架自动注入,使用这个对象可以得到一个MockMvc实例。 使用MockMvc可以测试MVC中的controller 比如: 

WebApplicationContext wac = ...; 

MockMvc mockMvc = webAppContextSetup(wac).build(); 

mockMvc.perform(get("/form")) 
     .andExpect(status().isOk()) 
     .andExpect(content().mimeType("text/html")) 
     .andExpect(forwardedUrl("/WEB-INF/layouts/main.jsp")); 

其中 mockMvc.perform() 返回的是ResultActions,可以调用它的以下方法测试。 

ResultActions andDo(ResultHandler handler) 
Perform a general action. 

ResultActions andExpect(ResultMatcher matcher) 
Perform an expectation. 

MvcResult andReturn() 
Return the result of the executed request for direct access to the results. 

例如: 

static imports: MockMvcRequestBuilders.*, MockMvcResultMatchers.* 

mockMvc.perform(get("/person/1")) 
   .andExpect(status().isOk()) 
   .andExpect(content().contentType(MediaType.APPLICATION_JSON)) 
   .andExpect(jsonPath("$.person.name").value("Jason")); 

mockMvc.perform(post("/form")) 
   .andExpect(status().isOk()) 
   .andExpect(redirectedUrl("/person/1")) 
   .andExpect(model().size(1)) 
   .andExpect(model().attributeExists("person")) 
   .andExpect(flash().attributeCount(1)) 
   .andExpect(flash().attribute("message", "success!")); 

获取movkMvc:

import org.junit.Before; 
import org.junit.Ignore; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.test.context.web.WebAppConfiguration; 
import org.springframework.test.web.servlet.MockMvc; 
import org.springframework.test.web.servlet.setup.MockMvcBuilders; 
import org.springframework.web.context.WebApplicationContext; 

@Ignore 
@WebAppConfiguration 
public class WebCommonTest extends CommonTest{ 

public MockMvc mockMvc; 

@Autowired 
protected WebApplicationContext wac; 

@Before() 
public void setup() { 
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build(); 
} 
} 

 

4. 打包测试 

一次性跑一组unit test,可以使用junit的测试套件(Suite),但是貌似这个套间不太好用,于是引入google的强大的测试工具类junittoolbox。 
该工具类支持通配符来进行打包配置,一次测试一组符合某个pattern的unit test。 manve的pom中引入以下依赖:

  
  com.googlecode.junit-toolbox 
  junit-toolbox 
  2.2 
  test 
 

配置类似如下的测试套件类: 

import org.junit.runner.RunWith; 

import com.googlecode.junittoolbox.SuiteClasses; 
import com.googlecode.junittoolbox.WildcardPatternSuite; 
@RunWith(WildcardPatternSuite.class) 
@SuiteClasses({"**/*.class","!TestAll.class"}) 
public class TestAll { 
}
赞 赏

   微信赞赏  支付宝赞赏


本文固定链接: https://www.jack-yin.com/coding/test/2638.html | 边城网事

该日志由 边城网事 于2017年12月06日发表在 测试 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 基于 Maven 的Spring Boot 工程的Unit Test 配置 | 边城网事
关键字: , ,

基于 Maven 的Spring Boot 工程的Unit Test 配置 暂无评论

发表评论

快捷键:Ctrl+Enter