【发布时间】:2019-12-17 23:46:30
【问题描述】:
如何在 JUnit 中编写使用 JOOQ 作为数据访问层的集成测试,以及在测试完成后回滚?
Jooq 似乎只提供非常有限的事务管理。它提供了一种方法
DSLContext.transaction(TransactionalRunnable transactional)
如果传递的 lambda 抛出异常,此方法将回滚事务。但是如何使用 JUnit 集成测试来实现这一点并不明显。我真正想要的是不使用 Spring 的 @Transactional 接口的等价物。
@Transactional
class UserApiTest
{
UserApi api;
@Test
public void testUpdateUserLastName() {
User user = getUserByUsername();
user.setLastName("NewLastName");
api.updateUser(user);
assertEquals("NewLastName", user.getLastName());
// database should be unchanged after test completion because of automatic rollback
}
}
class UserApiImpl implements UserApi
{
private final DSLContext db;
@Override
public void updateUser(LegacyUser user) {
UserRecord userRecord = db.newRecord(USER, user);
db.executeUpdate(userRecord);
}
}
任何建议将不胜感激。
【问题讨论】:
标签: testing transactions jooq