C# 如何使用NUnit进行数据独立的单元测试

C# 如何使用NUnit进行数据独立的单元测试,c#,oracle,nunit,C#,Oracle,Nunit,我希望运行Nunit测试,但我不希望测试依赖于数据。 例如:若我在测试服务器上运行我的单元测试,参考测试数据库,若一些用户更改了数据库值; 它不应该对我的测试场景产生影响。 但是,我希望我的测试场景引用oracle存储过程。 谢谢……任何帮助都将不胜感激。 另外,我也愿意使用任何其他工具来实现这一点。如果您真的要访问数据库,那么这不是单元测试,而是集成测试。 基本上你有两个选择,一个是优点,另一个是缺点: 保持集成测试的想法,但一定要确保您使用的数据符合预期。这可以通过使用测试数据库中的存储过程

我希望运行Nunit测试,但我不希望测试依赖于数据。 例如:若我在测试服务器上运行我的单元测试,参考测试数据库,若一些用户更改了数据库值; 它不应该对我的测试场景产生影响。 但是,我希望我的测试场景引用oracle存储过程。 谢谢……任何帮助都将不胜感激。
另外,我也愿意使用任何其他工具来实现这一点。

如果您真的要访问数据库,那么这不是单元测试,而是集成测试。
基本上你有两个选择,一个是优点,另一个是缺点:

  • 保持集成测试的想法,但一定要确保您使用的数据符合预期。
    这可以通过使用测试数据库中的存储过程来实现,该存储过程在调用数据时重新创建数据,您可以在测试初始化中调用此过程,然后执行所有测试。
    主要的缺点是测试比单元测试花费更多的时间,并且会花费更多的资源。
    主要的优势是可以确保代码与数据库很好地集成

  • 选择使用实单元测试,在此选项中,您将根本不使用数据库,而是在内存中创建表示数据库中数据的对象。
    因为您将在单元测试的排列部分创建这些对象,所以您可以非常清楚地知道它们所保存的数据。
    这里的主要缺点是您不能确定自己的代码是否与数据库集成良好。
    主要的优势是该测试比集成测试花费的时间更少,花费的资源也更少,而且即使测试数据库关闭,您的测试也可以运行

  • 如果您想实际选择使用这两个选项,这很有用,因为每个测试都从不同的角度测试代码。

    有关单元测试与集成测试的更多信息,请参见