0

我有一个需要测试的耗时操作。该操作对数据库进行更改。目前,我的大部分测试都非常相似,都是对数据库进行查询,以确定操作后的预期结果。然后,运行被测操作。最后,再次查询数据库以确定是否满足预期条件。由于我只是在每次测试中查询数据库以确定预期和实际结果,并且被测函数始终对数据库执行相同的操作。有没有一种方法可以让我运行一次操作并且仍然在自己的测试中测试每个条件?

4

2 回答 2

2

对具有副作用的代码(例如连接到数据库)运行单元测试的标准策略是提供模拟对象而不是真正的数据库连接或其他服务,但这取决于您的代码的结构,这可能更难或更容易采用.

控制反转和依赖注入的框架对于这种目的非常有帮助。依赖注入模式确保对象可以在运行时将依赖实现传递给它们,而不是直接构造它们,用于测试目的或只是为了创建更多模块化代码。StructureMap就是这样的 C# 框架,但还有其他框架,例如 Spring.NET。

于 2012-08-02T12:29:43.373 回答
1

听起来您想使用单元测试框架和/或模拟框架。

作为一般规则,您不应该编写额外的查询来测试查询在数据库上是否按预期工作,因为这些本身将需要开发和测试。

根据您正在写入的数据库,您可能能够获取数据库上受影响的行数(查看 SQL Server 的@@rowcount)。但是同样,您添加额外的代码只是为了进行测试,这应该是一个单独的活动。

于 2012-08-02T12:28:53.383 回答