我的数据库有一个 Dao 层。现在,我正在为它编写一些集成测试。我想知道是否应该在测试类中使用 @Transactional 或 @Rollback,因为它们都将更改还原到数据库。哪一个是好的做法,在什么条件下?
我尝试同时使用它们,它们都适用于我的情况。我的类中有一个带@Before 注释的方法。
@RunWith(SpringRunner.class)
@AutoConfigureTestDatabase(replace = NONE)
@DataJpaTest
// @Transactional or @Rollback?
public class TestDao {
@Autowired
private ConcreteDao concreteDao;
@Before
public void cleanUp(){ . . . }
@Test
public void testSaveAllEntries(){ . . . }
// and other tests
}
最佳答案
同意@michael 根本不要让你的测试@transactional(但你的服务层)这意味着你通过测试调用的所有服务层/持久层方法将开始他们自己的交易(你让他们交易,没有你?)并在提交时刷新更改。所以你一定会注意到刷新时是否有什么东西爆炸了,而且很可能在一段时间后,一个充满垃圾测试数据的数据库
关于java - 我应该为 DAO 测试类使用@Transactional 还是@Rollback?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55948378/