springmvc的junit 4测试

现在重新开始学java,好好的学框架
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 等的模拟

猜你喜欢

转载自yangjing1591-163-com.iteye.com/blog/2289997