5

我将如何使用 NUnit 和测试数据库来验证我的代码?理论上我会使用模拟(moq),但我的代码更多的是维护形状并修复它模式,我没有设置所有模拟的权限。

我是否只是创建一个测试项目,然后编写实际连接到我的测试数据库的测试并像在应用程序中那样执行代码?然后我用断言检查代码并确保我请求的是我正确返回的内容?

4

2 回答 2

6

我将如何使用 NUnit 和测试数据库来验证我的代码?理论上我会使用模拟(moq),但我的代码更多的是维护形状并修复它模式,我没有设置所有模拟的权限。

仅当您想测试类的确切实现行为时,使用模拟才有用。这意味着您实际上是在断言一个类调用另一个类的特定方法。例如:我想断言 Ninja.Attack() 调用了 Sword.Unsheath()。

我是否只是创建一个测试项目,然后编写实际连接到我的测试数据库的测试并像在应用程序中那样执行代码?然后我用断言检查代码并确保我请求的是我正确返回的内容?

这只是一个普通的旧单元测试。如果实现这一目标没有障碍,那就是一个很好的指标,表明这将是您最有效的测试方法。它实用且高效。

您没有提到另一种测试工具,称为存根。我强烈建议您阅读这篇经典文章以获取更多信息:

http://martinfowler.com/articles/mocksArentStubs.html

于 2012-12-07T22:51:31.877 回答
2

由于我们不是在谈论理论案例,这就是我要做的 - 根据我的理解,您想要测试的是您的应用程序是否正确连接到数据库并获取所需的数据。

  1. 创建具有相同架构的测试数据库
  2. 在其中添加一些虚拟数据
  3. 从代码打开到数据库的连接,请求所需的数据
  4. 编写断言以测试您从数据库中获得的内容与您的预期是否相符

另外,我认为这些测试不应该被称为单元测试,因为它们不是自包含的,并且取决于其他因素,例如您的数据库是否启动和运行。我会说它们接近于集成测试,它将测试应用程序的不同组件在一起使用时是否按预期工作。

(丹的回答^^几乎概括了我想说的)

于 2012-12-07T22:58:58.007 回答