@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("spring-config.xml")
@Transactional
@TransactionConfiguration(transactionManager="transactionManager",defaultRollback= true)
//使用改注释会使用事务,而且在测试完成之后会回滚事务,也就是说该方法中做出的一切操作都不会对数据库中的数据产生影响
public abstract class BaseTest extends AbstractTransactionalJUnit4SpringContextTests{
public abstract void init();
public abstract void destory();
}
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"consumer.xml"});
context.start();
//列出所有交给spring实例化的bean
String[] arr = context.getBeanDefinitionNames();
for(String s:arr){
System.out.println(s);
}
Spring3.0集成测试后,新增了许多annotation方式,可参考官网:http://docs.spring.io/spring/docs/4.0.3.RELEASE/spring-framework-reference/html/testing.html#testcontext-tx
下面转一个Spring3.0集成后的例子:
package cn.javass.ssonline.spider.service.impl;
import static junit.framework.Assert.assertEquals;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasItem;
import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
import cn.javass.demo.model.UserModel;
import cn.javass.demo.service.UserService;
/**
*
* 该测试为集成测试,非单元测试
*
* User: Zhang Kaitao
* Date: 11-12-26 下午4:33
* Version: 1.0
*/
//@Ignore
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-config.xml"})
@Transactional
@TransactionConfiguration(transactionManager = "txManager", defaultRollback = true)
public class UserServiceTest {
AtomicInteger counter = new AtomicInteger();
@Autowired
private UserService userService;
@Test
public void testCreate() {
int beforeDbCount = userService.countAll();
userService.save(genRandomUser());
int afterDbCount = userService.countAll();
assertEquals(beforeDbCount + 1, afterDbCount);
}
@Test
public void testUpdate() {
UserModel user = userService.save(genRandomUser());
String expectedPassword = "123234";
user.setPassword(expectedPassword);
userService.update(user);
String actualPassword = userService.get(user.getId()).getPassword();
assertEquals(expectedPassword, actualPassword);
}
@Test
public void testDelete() {
int beforeDbCount = userService.countAll();
UserModel user = userService.save(genRandomUser());
userService.delete(user.getId());
int afterDbCount = userService.countAll();
assertEquals(beforeDbCount, afterDbCount);
}
@Test
public void testList() {
UserModel user = userService.save(genRandomUser());
List<UserModel> userList = userService.listAll();
assertThat(userList, hasItem(user));
}
public UserModel genRandomUser() {
long randomKey = System.nanoTime() + counter.addAndGet(1);
UserModel user = new UserModel();
user.setUsername("zhang" + randomKey);
user.setEmail("zhang" + randomKey + "@sishuok.com");
user.setPassword("123456");
user.setRegisterDate(new Date());
return user;
}
}