Transactions DAO集成测试与Spring测试的自动回滚是一个好的实践吗?

Transactions DAO集成测试与Spring测试的自动回滚是一个好的实践吗?,transactions,integration-testing,dao,dbunit,spring-test,Transactions,Integration Testing,Dao,Dbunit,Spring Test,如果我用@Transactional注释我的DAO集成测试方法,Spring测试将在每个测试方法完成后愉快地回滚对数据库的任何更改。这些看起来非常方便,因为我可以用@BeforeClass方法加载测试数据一次,所有清理都由我来处理 但我怀疑这是否是一个好的实践,因为我将错失发现提交过程中可能发生的失败的机会。关于在DAO的dbunit集成测试中使用事务来帮助清理的共识是什么???这是非常好的。您将对单元测试执行写操作,DB将验证这些操作。他们不会承诺,但这最后一步不会因为业务逻辑而失败,因此您不

如果我用@Transactional注释我的DAO集成测试方法,Spring测试将在每个测试方法完成后愉快地回滚对数据库的任何更改。这些看起来非常方便,因为我可以用@BeforeClass方法加载测试数据一次,所有清理都由我来处理


但我怀疑这是否是一个好的实践,因为我将错失发现提交过程中可能发生的失败的机会。关于在DAO的dbunit集成测试中使用事务来帮助清理的共识是什么???

这是非常好的。您将对单元测试执行写操作,DB将验证这些操作。他们不会承诺,但这最后一步不会因为业务逻辑而失败,因此您不必担心。

事实证明,我对这种方法非常满意。此外,每次切割加载一次测试数据,而不是永远加载测试方法,可以节省集成测试中的大量时间。所有这些中唯一的问题是JUnit@BeforeClass(愚蠢地)要求带注释的方法是静态的。因此,我必须找到另一种方法在每次剪切之前加载测试数据……我为此编写了自己的帮助器类。JUnit要求@BeforeClass是静态的,因为它在调用每个测试方法之前创建了测试类的新实例。这有助于确保测试之间没有副作用。每个都有自己的测试类实例。