【发布时间】:2016-08-17 14:10:44
【问题描述】:
Tere are bean transactional bean witn method
public class Bean {
@Transactional(propogation = REQUARED) // propogation set for read clarity
public save(User user);
@Transactional(propogation = REQUARED)
public List<User> getUsers(); // implementation -
// native query - select * users;
// with User.class
}
测试类:
class Test {
@Autovired
private Bean bean;
public void test () {
User user = getNewUser();
bean.save(user);
Assert.assertTrue(bean.getUsers().size() = 1); //False because
//transaction do not commit
//but try it read data by sql query
//(not from persistence context)
}
}
上面有注释@AfterTransaction 来解决上面的问题。
@AfterTransaction
public void check() {
Assert.assertTrue(bean.getUsers().size() = 1); //True
}
但如果有其他方法。因为@AfterTransaction 一个用于测试类,但我们可以有许多带有检查的测试方法
【问题讨论】:
标签: java spring testing transactions