我刚刚开始了解单元测试在 ac# 环境中的重要性。现在,我想知道如何实现一个黑盒单元测试,它在数据库上执行插入、删除和更新,然后在成功测试后清理数据。
您实际上如何执行回滚插入/更新/删除数据的过程?您是否只是重置索引并删除插入的行?还是通过创建脚本来恢复表的原始状态?
请指导我,我很感激。谢谢!
我刚刚开始了解单元测试在 ac# 环境中的重要性。现在,我想知道如何实现一个黑盒单元测试,它在数据库上执行插入、删除和更新,然后在成功测试后清理数据。
您实际上如何执行回滚插入/更新/删除数据的过程?您是否只是重置索引并删除插入的行?还是通过创建脚本来恢复表的原始状态?
请指导我,我很感激。谢谢!
我们在开发周期中所做的工作。当我们开发应用程序时,我们总是会想到单元测试和负载测试。因此,我们在每个 datadase 的表中使用 userId 或其他方式创建一列。然后,当我们运行负载测试或单元测试时,我们在每一列中插入UserId -1,指出它是负载测试数据,如果是单元测试数据,则插入-2。然后我们在数据库端预定义作业,一段时间后将清理该数据。
只要您的测试简洁,并且我认为它必须是 - 为了测试您的 DAL,为什么不在测试完成后回滚的事务中执行插入/更新/删除。
另一种选择是在您的测试清理方法中使用特定的更新/删除脚本来回滚您更新/插入到其测试前值的确切更改。
我认为删除 CleanUp 方法中的行应该是不错的选择。
这样,您将始终测试您的删除行代码。
一种选择是使用模拟数据库代替真实数据库。这是一个描述它的链接。
我最近在做一项研究,也发现了这个线程。以下是我的发现,可能对未来的读者有所帮助:
我个人使用后者,甚至最终实现了一个Reseed库,它为我完成了所有工作。
测试框架通常允许在每次测试/测试夹具运行之前和之后执行一些逻辑,这很可能是上述想法所需要的。例如,对于 NUnit,这是使用OneTimeSetUp、OneTimeTearDown
、FixtureSetUp
、FixtureTearDown
、SetUp
、TearDown
属性实现的。