【发布时间】:2019-05-02 08:24:56
【问题描述】:
我的数据库有一个 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
}
【问题讨论】:
-
“哪个是好的做法”在单元测试中测试数据库本身已经是不好的做法。依赖恢复状态听起来更糟糕
-
查看 Enabling and Disabling Transactions 的官方 Spring Framework 参考文档。只使用
@Transactional就足够了
标签: java spring testing junit dao