使用 Spring Test 自动回滚 DAO 集成测试是一种好习惯吗?
Posted
技术标签:
【中文标题】使用 Spring Test 自动回滚 DAO 集成测试是一种好习惯吗?【英文标题】:Is automatic rollback of DAO integration tests with Spring Test a good practice? 【发布时间】:2011-03-01 15:56:22 【问题描述】:如果我用 @Transactional 注释我的 DAO 集成测试方法,Spring Test 将在每个测试方法完成后愉快地回滚对数据库的任何更改。这些看起来非常方便,因为我可以使用 @BeforeClass 方法加载测试数据一次,所有清理工作都由我处理。
但我质疑这是否是一种好的做法,因为我会错过发现提交期间可能发生的故障的机会。在 DAO 的 dbunit 集成测试中使用事务来帮助清理的共识是什么??
【问题讨论】:
【参考方案1】:这很好。您将对单元测试执行写操作,数据库将验证这些操作。它们不会被提交,但由于业务逻辑,这最后一步永远不会失败,因此您不必担心。
【讨论】:
事实证明,我对这种方法非常满意。此外,每个 CUT 加载一次测试数据而不是永远的测试方法可以节省大量集成测试时间。所有这一切中唯一的问题是 JUnit @BeforeClass(愚蠢地)要求带注释的方法是静态的。所以我不得不在每次 CUT 之前找到另一种加载测试数据的方法......为此我编写了自己的帮助程序类。 JUnit 要求 @BeforeClass 是静态的,因为它会在调用每个测试方法之前创建测试类的新实例。这有助于确保测试之间没有副作用。每个都有自己的测试类实例。以上是关于使用 Spring Test 自动回滚 DAO 集成测试是一种好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章