Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VisualStudio2010单元测试_C#_Unit Testing_Visual Studio 2010_Testing - Fatal编程技术网

C# VisualStudio2010单元测试

C# VisualStudio2010单元测试,c#,unit-testing,visual-studio-2010,testing,C#,Unit Testing,Visual Studio 2010,Testing,我试图在VisualStudio2010单元测试中了解如何保留在测试期间添加、更新或删除的数据事务,以便在TestCleanup上回滚它们的值 我应该使用什么搜索词来查找更多关于此的信息 干杯 Paul为什么需要回滚更改?您的单元测试是否正在更新实时数据?如果单元测试编写正确,您不必在测试更改后进行清理,因为它们更改的数据应该与您的测试隔离 编辑: 听起来您已经为测试设置了一个数据集,并希望确保数据集恢复到其原始状态。我更喜欢将设置测试数据作为测试的一部分的做法,但我理解,对于复杂的测试,这可能

我试图在VisualStudio2010单元测试中了解如何保留在测试期间添加、更新或删除的数据事务,以便在TestCleanup上回滚它们的值

我应该使用什么搜索词来查找更多关于此的信息

干杯


Paul

为什么需要回滚更改?您的单元测试是否正在更新实时数据?如果单元测试编写正确,您不必在测试更改后进行清理,因为它们更改的数据应该与您的测试隔离

编辑:

听起来您已经为测试设置了一个数据集,并希望确保数据集恢复到其原始状态。我更喜欢将设置测试数据作为测试的一部分的做法,但我理解,对于复杂的测试,这可能会变得困难

如果这是在ADO.NET数据源中进行的,则可以启动一个事务,然后在测试结束时回滚该事务。例如:

using (var transaction = db.BeginTransaction())
{
    // Do tests here
}
// The transaction is rolled back when disposed
编辑2:


如果您没有事务支持,第三种选择是将测试数据备份到一个不会被修改的地方,然后在测试结束时恢复该备份。

为什么需要回滚更改?您的单元测试是否正在更新实时数据?如果单元测试编写正确,您不必在测试更改后进行清理,因为它们更改的数据应该与您的测试隔离

编辑:

听起来您已经为测试设置了一个数据集,并希望确保数据集恢复到其原始状态。我更喜欢将设置测试数据作为测试的一部分的做法,但我理解,对于复杂的测试,这可能会变得困难

如果这是在ADO.NET数据源中进行的,则可以启动一个事务,然后在测试结束时回滚该事务。例如:

using (var transaction = db.BeginTransaction())
{
    // Do tests here
}
// The transaction is rolled back when disposed
编辑2:


如果您没有事务支持,第三种选择是将测试数据备份到不会被修改的地方,然后在测试结束时恢复备份。

对于单元测试,您可能应该尝试使用而不是访问测试数据库。单元测试通常应该是完全独立的(并且不依赖外部资源,例如数据库)

如果您实际上正在测试对数据库的调用,那么这可能是一个集成测试,在这种情况下,您可以:

  • 在安装程序中创建测试数据
  • 运行代码
  • 断言测试通过
  • 删除步骤1中插入的测试数据

  • 对于单元测试,您可能应该尝试使用而不是访问测试数据库。单元测试通常应该是完全独立的(并且不依赖外部资源,例如数据库)

    如果您实际上正在测试对数据库的调用,那么这可能是一个集成测试,在这种情况下,您可以:

  • 在安装程序中创建测试数据
  • 运行代码
  • 断言测试通过
  • 删除步骤1中插入的测试数据

  • 不,我只使用测试数据集。如果我的测试从测试数据库执行删除,那么我真的希望在成功执行删除后将测试数据集回滚到其原始状态,以便我可以在另一个测试中使用此数据。我明白了。您可以采取的另一种方法是创建测试所需的测试数据,作为该测试的设置。如果我的测试从测试数据库执行删除,那么我真的希望在成功执行删除后将测试数据集回滚到其原始状态,以便我可以在另一个测试中使用此数据。我明白了。您可以采取的另一种方法是创建测试所需的测试数据,作为该测试的设置。。。。但我正在为我的NHibernate数据提供商编写测试,所以我真的需要测试它是否与数据库一起工作。我会放弃步骤4,确保步骤1能够处理它不期望的数据。我在某种程度上同意单元测试通常应该是自包含的,而不依赖于外部源。。。。但是我正在为我的NHibernate数据提供者编写测试,所以我真的需要测试它是否与数据库一起工作。我将放弃步骤4,并确保步骤1能够处理它不期望的数据。