用于测试和开发的不同数据库

时间:2013-11-29 10:02:32

标签: ruby-on-rails sqlite postgresql tdd cucumber

我见过很多例子,其中sqlite用于测试数据库,postgres / mysql用于开发。

这种策略有什么含义?

这两个数据库之间存在明显的差异,理论上可能一个传递一个的测试可能会失败。

4 个答案:

答案 0 :(得分:1)

我想,这是为了简单起见。使用sqlite,开发人员无需在其计算机上安装完整的DB服务器。它“只是工作”。对于教程等非常有用。

但是,当然,它可以在后面部分咬你(正如你正确指出的那样)。在实际应用程序的实际开发中,您应该在所有环境中使用相同的数据库。

答案 1 :(得分:0)

是的,我完全同意塞尔吉奥。这些指南在以轨道方式完成所有内容时非常有用,但实际生产应用程序并非总是这样。不仅仅是数据库,而且每个细节都应该复制到测试/登台机器,包括数据库时区和全局变量或设置或配置。

答案 2 :(得分:0)

这样做有99.9%的错误。可能有一些极端的边缘情况,你可以争辩这样做,虽然我想不到一个,可能不会在这一生中。

Postgres是免费的,为什么甚至会考虑在另一个环境中替换sqlite?我希望我的数据不会存在于这些系统中,如果这是正在做出的决策类型,它们听起来就像一个纱球。

一位称职的工程师努力将系统从开发复制到生产,而不是偏离那些没有意义的地方。

答案 3 :(得分:0)

SQLite是比PostgreSQL或MySQL更简单的数据库,如果您正在测试“非常小”的应用程序,您可以轻松地使用它而不是PostgreSQL。但我不推荐它,因为:

  • 与生产中使用的不一样。尽可能尝试使用相同的数据库引擎,即使版本应该相同。毕竟你想确保它一旦上线,一切都会正常工作。
  • 如果你在数据库上有某种复杂的逻辑,你将无法在Sqlite上测试它。
  • 您将无法测试特定于一个数据库引擎的数据库配置。

基本测试,因为你将提供,除非不可能,在这种情况下,尝试看起来最像一个选项。