您的位置:首页 > 编程语言 > Java开发

Spring-mvc junit单元测试中 如何回滚?

2016-05-13 21:50 417 查看
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration(value = "src/main/webapp")
@ContextHierarchy({
@ContextConfiguration(name = "parent", locations = "classpath:./spring/applicationContext.xml")
})
public class MessageTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;

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

@Test
public void testTempPage() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/msg/temp/page/v1"));
}

@Test
public void testAddTemp() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/msg/temp/add/v1").param("name", "新测试3")
.param("content", "nice roll"));
}
}

testAddTemp添加了一天记录,如何使这个测试添加的动作自动回滚?

2015年09月16日提问

评论

邀请回答

1 个回答

1

采纳

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration(value = "src/main/webapp")
@ContextHierarchy({
@ContextConfiguration(name = "parent", locations = "classpath:./spring/applicationContext.xml")
})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public class MessageTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;

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

@Test
public void testTempPage() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/msg/temp/page/v1"));
}

@Test
@Rollback(true)
public void testAddTemp() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/msg/temp/add/v1").param("name", "新测试3")
.param("content", "nice roll"));
}
}

一般来说在你的测试类上加上@Transactional就足够了,Spring默认是会回滚的。
更简便的做法:直接继承
AbstractTransactionalJUnit4SpringContextTests
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: