1

我正在尝试继续我的 Entity Framework + 测试经验。我在 NUnit 中编写了删除表、创建新数据库、在表中创建测试所需的行、进行测试并重复的测试。

有一篇关于两种不同测试策略Effort的好文章解释了使用(在内存数据库中)进行测试有一些缺点。无论如何,我确实非常喜欢针对实际数据库进行测试,因为这样我就可以验证真实数据库以验证事物是否以及如何最终进入数据库。

然后我看到了这篇文章,在那里我可以读到我应该/可以为我的应用程序和测试使用不同的数据库服务器。例如,应用程序针对 SQL Server 运行,而测试针对 SQL Server CE 运行。

我现在有几个在 SQL Server Express 上工作的集成测试。我的应用程序在相同的连接字符串上运行,针对相同的数据库服务器实例。

这是不明智的吗?

从长远来看,我有麻烦吗?

任何人都可以确认并解释是否需要/建议为应用程序(SQL Server)和集成测试(SQL Server CE)使用不同的数据库服务器?

提前非常感谢。

4

1 回答 1

7

使用 SQL Server 作为数据库,使用 SQL Server CE 作为测试数据库可能是值得的。这很常见,因为在 SQL Server CE 上运行测试可能比在 SQL Server 上运行这些测试通常做的事情更快(创建整个数据库,执行快速事务,然后完全销毁它)。这也意味着您不需要在开发计算机上安装完整的 SQL Server。

但是,没有必要这样做。有些人可能也不想这样做。您甚至可能在程序中使用了仅在 SQL Server 上可用的功能,这基本上意味着您将无法使用 SQL Server CE。

最后,您的代码可能适用于 SQL Server CE,但不适用于 SQL Server,因此在测试期间不会出现问题。有一次,我针对 MySQL 运行了一个应用程序,但使用 sqlite 来运行一些测试。sqlite 与 MySQL 的工作方式略有不同,这导致我的程序在测试中运行良好,但在现场运行时失败。

因此,我仍然建议能够针对您将在现场使用的相同类型的数据库进行测试。您总是可以找到中间立场,例如针对 SQL Server CE 测试数据库进行开发,然后切换到 SQL Server 上的测试,然后再使用新版本来涵盖这种情况。

于 2013-02-24T09:39:24.333 回答