Spring mvc junit 4
当从中途开始再学习java,挑中一个框架开始学习,学习到测试类的时候,进行单元测试,还是想到了之前的junit 虽然在以前的实际开发中,用的更多的依然是 启动服务,关闭服务,sysout,但是这次想把它学好。
使用junit4 的步骤:
1.项目右键,在java bulid classpath中添加junit支持
2.新建。在想要进行单元测试的类中,进行Test Case添加
3.加入相应的jar
* spring-test-4.0.4.RELEASE.jar
* aopalliance.jar
4.进行spring配置文件的相关配置,对事务的支持
<tx:annotation-driven transaction-manager="transactionManager" /> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean>
5.然后再进行Test Case类的编写
package com.springmvc.act.test; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.WebApplicationContext; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*; import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import com.springmvc.act.dao.BlogsDao; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(locations={"classpath:springmvc.xml"}) /** * 基于Spring mvc 的单元测试 * 需要的jar * spring-test-4.0.4.RELEASE.jar * aopalliance.jar * 以及junit的相关jar包 * * 需要配置springmvc 事务相关操作 * */ @TransactionConfiguration(defaultRollback=true) @Transactional public class TestBaseDao { @Autowired BlogsDao blog; private MockMvc mockMvc; @Autowired private WebApplicationContext webApplicationContext; @Before public void step(){ this.mockMvc = webAppContextSetup(this.webApplicationContext).build(); } /** * 单元测试 模拟Get请求 */ @Test @Rollback(false) public void testGet(){ try { mockMvc.perform(get("/test/index").param("name", "zhangsnan")) .andExpect(status().isOk()).andDo(print()); } catch (Exception e) { e.printStackTrace(); } } /** * 单元测试 junit 模拟Post请求 */ @Test public void testPost() throws Exception{ mockMvc.perform(post("/test/requestMoney").param("id", "10")) .andExpect(status().isOk()).andDo(print()); } /** * 请求数据库 执行删除操作 */ @Test public void testDelete_Blog() { System.out.println(blog.delete_Blog("1")); } }
* 添加静态的引用
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*; import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
实现get,post 的模拟请求 包括 header body status 等的模拟