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

C# 使用单元测试和测试数据库,c#,unit-testing,.net-3.5,nunit,database-testing,C#,Unit Testing,.net 3.5,Nunit,Database Testing,如何使用NUnit和测试数据库来验证代码?理论上我会使用mock(moq),但我的代码更多地处于维护和修复模式,我没有设置所有mock的能力 我是否只是创建一个测试项目,然后编写实际连接到测试数据库的测试,并在应用程序中执行代码?然后,我用断言检查代码,并确保我请求的是正确返回的内容 如何使用NUnit和测试数据库来验证代码?我会的 理论上使用mock(moq),但我的代码更多的是维护性的,并且 修复它的模式,我不需要设置所有的模拟 只有当您想测试类的确切实现行为时,使用mock才有用。这意味着

如何使用NUnit和测试数据库来验证代码?理论上我会使用mock(moq),但我的代码更多地处于维护和修复模式,我没有设置所有mock的能力

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

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

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

我是否只是创建一个测试项目,然后编写实际需要的测试 连接到我的测试数据库并按照我在 应用程序?然后我用断言检查代码,并确定我是什么 我得到的是正确的吗

这只是一个简单的旧单元测试。如果实现这一目标没有任何障碍,这将是一个很好的指标,表明这将是您最有效的测试方法。它既实用又高效

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


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

  • 使用相同的模式创建测试数据库
  • 在其中添加一些虚拟数据
  • 从代码中打开到DB的连接,请求所需的数据
  • 编写断言,根据您的预期测试您从数据库中获得的内容
  • 另外,我不认为这些测试应该称为单元测试,因为它们不是自包含的,并且依赖于其他因素,比如数据库是否已启动并运行。我想说,它们接近于集成测试,集成测试将测试应用程序的不同组件在一起使用时是否按预期工作


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

    谢谢,那是给我的。所以,只要用我的代码调用db并测试它是否正确就行了。它可能看起来太好了,不可能是真的,但它是有效的。特别是考虑到您的应用程序已经编写好,听起来您实际上是指集成测试。单元测试是独立的,它提供依赖项的模拟/伪实现来测试一个方法,而这些方法中没有任何数据库代码。