使用单元测试和测试数据库

时间:2012-12-07 22:37:38

标签: c# unit-testing .net-3.5 nunit database-testing

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

我是否只是创建一个测试项目,然后编写实际连接到我的测试数据库的测试并按照我在应用程序中执行代码?然后我用断言检查代码并确保我要求的是我正确回来的东西?

2 个答案:

答案 0 :(得分:6)

  

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

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

  

我只是创建一个测试项目,然后编写实际的测试   连接到我的测试数据库并按照我的意愿执行代码   应用程序吗?然后我用断言检查代码并确定我是什么   请求是我正确回来的?

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

还有一个你没有提到的测试工具,叫做存根。我强烈建议您阅读这篇经典文章了解更多信息:

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

答案 1 :(得分:2)

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

  1. 使用相同架构创建测试数据库
  2. 中添加一些虚拟数据
  3. 从代码中打开与DB的连接,请求所需的数据
  4. 编写断言以测试您从数据库中获得的内容与您预期的内容
  5. 另外,我不认为这些测试应该被称为单元测试,因为它们不是自包含的,并且依赖于其他因素,例如数据库是否已启动和运行。我会说他们接近集成测试,测试应用程序的不同组件是否在一起使用时是否正常工作。

    (Dan的答案^^几乎总结了我想说的内容)