如何在Spring Boot测试中强制事务提交?
如何 时而 在方法后强制在Spring Boot" title="Spring Boot">Spring Boot中使用Spring Data强制进行事务提交?
我在这里读到,@Transactional(propagation =
Propagation.REQUIRES_NEW)在另一堂课上应该有可能,但对我不起作用。
有什么提示吗?我正在使用Spring Boot v1.5.2.RELEASE。
@RunWith(SpringRunner.class)@SpringBootTest
public class CommitTest {
@Autowired
TestRepo repo;
@Transactional
@Commit
@Test
public void testCommit() {
repo.createPerson();
System.out.println("I want a commit here!");
// ...
System.out.println("Something after the commit...");
}
}
@Repository
public class TestRepo {
@Autowired
private PersonRepository personRepo;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void createPerson() {
personRepo.save(new Person("test"));
}
}
回答:
一种方法是将TransactionTemplate
in
插入到测试类中,删除@Transactional
和,@Commit
然后将测试方法修改为以下内容:
...public class CommitTest {
@Autowired
TestRepo repo;
@Autowired
TransactionTemplate txTemplate;
@Test
public void testCommit() {
txTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
repo.createPerson();
// ...
}
});
// ...
System.out.println("Something after the commit...");
}
要么
new TransactionCallback<Person>() { @Override
public Person doInTransaction(TransactionStatus status) {
// ...
return person
}
// ...
});
TransactionCallbackWithoutResult
如果您打算将断言添加到刚刚持久化的人员对象上,请使用回调隐式代替。
以上是 如何在Spring Boot测试中强制事务提交? 的全部内容, 来源链接: utcz.com/qa/435281.html