【问题标题】:Unit Test for readonly database只读数据库的单元测试
【发布时间】:2012-06-12 08:20:01
【问题描述】:

我们正在编写一个访问 erp 解决方案数据库的应用程序。当然我们是不允许写入数据库的(database = readonly)。

这会导致在为访问/读取数据库的 daos 编写测试时发生冲突。

生成测试数据的最佳做法是什么?

任何建议都将是appriciate,在此先感谢 托比

更新: 也许重要的是,我们不会映射 erp 数据库中表的所有属性,因为我们不需要它们。一些未映射的列不为空。

【问题讨论】:

  • 如果您的测试涉及数据库,它可能很有用,但它不是单元测试。

标签: database unit-testing readonly


【解决方案1】:

使用非生产数据库。如果可能的话,使用内存数据库,使用 DB Unit 之类的东西来创建模式和常备数据,并在测试包完成时让实例自行关闭。

【讨论】:

  • 不完全是我想要的,但我会将其标记为答案。
【解决方案2】:

过去我在一个事务中使用 NUnit 测试,然后在测试完成后回滚。 begin tran insert .... select .... 检查单元测试 ... rollback tran。这是您的选择吗?

【讨论】:

  • 感谢您的建议。不幸的是,这并不能解决我们的问题。该数据库是完全只读的。所以我们根本不想在这个数据库中写入。
【解决方案3】:

您应该创建两个数据库,一个用于您的实时数据,一个用于测试数据。然后您可以针对此测试数据进行精确测试,还可以通过探测写入数据库来测试只读功能。如果这失败了,你就成功了。

出于安全原因,您始终应该拥有一个测试和生产系统。如果写入测试失败并且您的所有生产数据都丢失了怎么办? 正如 Jeff Watkins 之前所说,您可以使用内存 DB,它会动态填充测试数据,然后设置为只读,然后进行测试。最简单的方法仍然是将另一个数据集作为普通数据库(但我不知道你在使用什么,所以你必须自己弄清楚什么最适合你的目的)。

【讨论】:

    猜你喜欢
    • 2017-03-12
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 2020-07-03
    相关资源
    最近更新 更多