Junit 使用集合
2016-05-31 20:51
274 查看
Spring测试
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.DirtiesContext; 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 com.bestcxx.stu.springmvc.model.UserModel; import com.bestcxx.stu.springmvc.service.UserModelService; @DirtiesContext @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:spring/springmvc-servlet.xml"}) //@TransactionConfiguration(transactionManager = "defaultTransactionManager",defaultRollback=false)//事务管理 @Rollback(true) public class UserModelServiceImplTest extends AbstractTransactionalJUnit4SpringContextTests{
Spring Boot 测试
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringRunner; import cn.acsm.paddy.manage.Application; import cn.acsm.paddy.manage.applyrecord.entity.ApplyRecord; import cn.acsm.paddy.manage.applyrecord.service.ApplyRecordService; @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) @Rollback(true) public class ApplyRecordServiceTest extends AbstractTransactionalJUnit4SpringContextTests{
TestCase-try-Catch
@Test public void test(){ int id=10000; EnterpriseInfo e=eService.getById(id); e.setUpdateUser(10000);//最后更新用户 try { eService.update(e); } catch (Exception e1) { // TODO Auto-generated catch block TestCase.fail("保存失败"); } }
Mock
validate 的 maven依赖<!-- validation 校验 开始 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.4.1.Final</version> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>javax.el-api</artifactId> <version>2.2.4</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>javax.el</artifactId> <version>2.2.4</version> </dependency> <!-- validation 校验 结束 -->
Mock 测试举例
package com.bestcxx.stu.springmvc.controller; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.test.annotation.DirtiesContext; 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.SpringRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; @DirtiesContext @RunWith(SpringRunner.class) //@RunWith(SpringJUnit4ClassRunner.class) 也是可以的 @WebAppConfiguration //单元测试的时候真实的开启一个web服务 @ContextConfiguration(locations={"classpath:spring/springmvc-servlet.xml"}) //@TransactionConfiguration(transactionManager = "defaultTransactionManager",defaultRollback=false)//事务管理 @Rollback(true) public class ParameterControllerTest extends AbstractTransactionalJUnit4SpringContextTests{ @Autowired private WebApplicationContext wac; private MockMvc mockMvc; @Before public void setup() { this.mockMvc = MockMvcBuilders.webAppContextSetup(wac).build(); //构造MockMvc } @Test public void testModel() throws Exception{ MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/parameterController/model") // 请求的url,请求的方法是post .contentType(MediaType.APPLICATION_JSON) // 数据的格式 .param("name"," " ) // 增加参数 ).andExpect(MockMvcResultMatchers.status().isOk()) // 返回的状态是200 .andDo(MockMvcResultHandlers.print()) // 打印出请求和相应的内容 .andReturn(); // 将相应的数据转换为字符串 System.out.println("--------返回的json = " + mvcResult.getResponse().getContentAsString()); } }
Spring boot 举例
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import java.io.UnsupportedEncodingException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; import junit.framework.TestCase; @RunWith(SpringRunner.class) @SpringBootTest @WebAppConfiguration @Rollback(true) //单元测试配置数据库默认会事务会退 此时强制事务提交 public class ApplyRecordControllerTest extends AbstractTransactionalJUnit4SpringContextTests{ private MockMvc mockMvc; @Autowired protected WebApplicationContext wac; // 该方法在每个方法执行之前都会执行一遍 @Before public void setUp() throws Exception { //mockMvc = MockMvcBuilders.standaloneSetup(new NameController()).build(); mockMvc = MockMvcBuilders.webAppContextSetup(wac).build(); //初始化MockMvc对象 } @Test public void test1() throws UnsupportedEncodingException, Exception { String responseString = mockMvc.perform(post("/a/b") // 请求的url,请求的方法是post .contentType(MediaType.APPLICATION_JSON) // 数据的格式 .param("a","111" ) // 参数 .param("b", "222")//参数 ).andExpect(status().isOk()) // 返回的状态是200 .andDo(print()) // 打印出请求和相应的内容 .andReturn().getResponse().getContentAsString(); // 将相应的数据转换为字符串 System.out.println("--------返回的json = " + responseString); } @Test public void test2() throws UnsupportedEncodingException, Exception { String responseString = mockMvc.perform(post("/c/d") // 请求的url,请求的方法是post .contentType(MediaType.APPLICATION_JSON) // 数据的格式 .param("a","111" ) // 参数 .param("c","222" ) // 参数 ).andExpect(status().isOk()) // 返回的状态是200 .andDo(print()) // 打印出请求和相应的内容 .andReturn().getResponse().getContentAsString(); // 将相应的数据转换为字符串 System.out.println("--------返回的json = " + responseString); } @Test public void test3() throws UnsupportedEncodingException, Exception { MvcResult mvcResult = mockMvc.perform(get("/a/1000") // 请求的url,请求的方法是post .contentType(MediaType.APPLICATION_JSON) // 数据的格式 ).andExpect(status().isOk())// 返回的状态是200 //.andDo(print()) // 打印出请求和相应的内容 .andReturn() ; // 将相应的数据转换为字符串 TestCase.assertEquals("/a/b/c", mvcResult.getModelAndView().getViewName());//返回页面是否符合预期 } }
extends AbstractTransactionalJUnit4SpringContextTests 需要配置事务
下面是一个典型的测试方法头部注释,继承 AbstractTransactionalJUnit4SpringContextTests 会使程序报异常@DirtiesContext @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:applicationContext.xml"}) //@TransactionConfiguration(transactionManager = "defaultTransactionManager",defaultRollback=false)//事务管理 @Rollback(true) public class TestTableOneMapperTest extends AbstractTransactionalJUnit4SpringContextTests{ /* public class TestTableOneMapperTest extends AbstractTransactionalJUnit4SpringContextTests{ */
异常内容主要信息为
java.lang.IllegalStateException: Failed to retrieve PlatformTransactionManager for @Transactional
原因是没有配置事务。
相关文章推荐
- 使用命令修改注册表键值及权限
- Fedora Linux 7 Test 4 发布 下载地址
- 给before和after伪元素设置js效果的方法
- jQuery使用after()方法在元素后面添加多项内容的方法
- jQuery使用before()和after()在元素前后添加内容的方法
- 自定义ubb代码,preg_replace()函数的一些代码
- php 正则表达式学习笔记
- 检测八位数字是否为有效日期的正则
- 向大家推荐一个收集整理正则表达式的网站
- 注意 JavaScript 中 RegExp 对象的 test 方法
- JS正则表达式详解[收藏]
- PHP 正则 email语句详解
- 经典JavaScript正则表达式实战(附pdf)
- 巧解 JavaScript 中的嵌套替换(强大正则)
- 正则表达式regular expression详述(二)
- 解决preg_match匹配过多字符长度的限制的思路分析
- 学习正则!超基础简单例子
- 正则表达式字面量在ECMAScript5中的变化
- PHP 正则的使用基础入门
- javascript 正则修正符