一、 Junit常用注解
1. @Before: 在每个测试方法执行之前都会执行一次,常用于初始化数据,资源
2. @BeforeClass: 在所有测试方法执行之前执行,只执行一次,类必须用static void 修饰
3. @AfterClass:在所有测试方法之后执行,只执行一次,类必须用static void 修饰
4. @After: 在每个测试方法执行之后都会执行一次,用于关闭资源
5. @Test:标注为测试方法
可参考博客:http://bijian1013.iteye.com/blog/1987441
二、 mockMVC测试
1. 相关注解
a) @WebAppConfiguration :启动一个web服务器,在测试结束之后再关闭该服务器
b) @RunWith(SpringJUnit4ClassRunner.class):指定单元测试执行类,该处使用SpringJUnit4ClassRunner.class
c) @ ContextConfiguration(”classpath:xxxx”):指定spring的测试配置文件,建议测试的配置文件与正式的配置文件分开,可以指定多个配置文件格式如:locations = { "classpath*:/spring1.xml","classpath*:/spring2.xml" }
2. 实例化mockmvc
a) MockMVCmockmvc= MockMvcBuilders.standaloneSetup(Object... controllers).build();通过指定一组控制器来创建一个mockmvc用于测试
3. 相关测试方法
a) perform() : 执行请求,调用业务逻辑处理
b) get(”url”):指定请求方式,还可以有post等相关方式,URL为请求路径
c) param(): 请求参数
d) andReturn ():返回相应的mvcResult处理结果
e) andDo():添加一个结果处理器,如使用MockMvcResultHandlers.print()输出整个响应结果信息,andDo(MockMvcResultHandlers.print())
4. 代码实例
5. @WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-context-test.xml")
public class SubscriberCountControllerTest {
@Autowired
private WhiteListServicewhiteListService;
@Autowired
private InvalidParaminvalidParam;
@Autowired
private SubscriberCountServicesubscriberCountService;
private MockMvc mockMvc;
@Before
public void setUp()throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(newSubscriberCountController(
invalidParam,whiteListService,subscriberCountService))
.build();
}
@Test
public void subscriberMinCount1day()throws Exception{
String json=this.mockMvc.perform(get("/v1.0/realtimeSubscriberAnalysis/subscriberMinCounts")
.param("areaIds","1;2")
.param("recordedDateTime","2017-10-10 21:00:00")
.param("applicationId","test")).andReturn().getResponse().getContentAsString();
List<SubscriberDayCount> list=newObjectMapper().readValue(json,newTypeReference<List<SubscriberDayCount>>(){});
for (SubscriberDayCount sc: list) {
System.out.println(sc.toString());
}
}
}
参考博客:https://www.cnblogs.com/xiaohunshi/p/5706943.html
https://www.cnblogs.com/lyy-2016/p/6122144.html