【问题标题】:What’s the strategy to recover data during DAO unit test?在 DAO 单元测试期间恢复数据的策略是什么?
【发布时间】:2011-02-04 17:43:41
【问题描述】:

当我在 JUnit 中测试 DAO 模块时,一个明显的问题是:如何恢复数据库中的测试数据? 例如,在 testA()testB() 两个测试方法中都应该删除一条记录,这意味着这两种测试方法的前提条件都需要删除现有记录。然后我的策略是在 setUp() 方法中插入记录来恢复数据。

您有什么更好的解决方案?或者你在这种情况下的实际想法?谢谢

【问题讨论】:

    标签: java database junit dao


    【解决方案1】:

    我会创建一个名为createRecord() 的方法。它也可能是一种测试方法。每当您需要创建记录时,请从您的其他测试方法中调用该方法。

    【讨论】:

      【解决方案2】:

      也许DBUnit 可以帮助您。 它允许在执行每个测试之前使 TEST 数据库处于预定义状态。设置完成后,测试数据库驱动的应用程序非常容易。

      【讨论】:

        【解决方案3】:

        一个简单的解决方案是在测试后回滚事务(例如在tearDown() 中)。这样,测试可以进行他们喜欢的所有更改,但不会更改数据库(不要忘记为连接关闭autoCommit)。

        但有一个缺点:如果测试失败,您无法查看数据库找出原因。因此,我的大多数测试在运行之前都会清理数据库并使用 autoCommit,这样我就可以看到它失败的最后状态,对数据运行固定的 SQL 查询等。

        【讨论】:

          【解决方案4】:

          Bozho 是对的,当然,只是补充一点细节:

          如果可能,单元测试会在操作数据之前设置它们的数据,然后自行清理。因此,理想情况下,您不会践踏现有数据(可能是从生产中复制的)进行测试,而是设置一些作为测试的一部分;这实际上是您可以确保您的测试将测试您的意图的唯一方法。

          【讨论】:

            猜你喜欢
            • 2010-09-28
            • 1970-01-01
            • 1970-01-01
            • 2011-01-19
            • 1970-01-01
            • 2010-09-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多