Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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# 使用生产数据库数据进行单元测试数据库数据的最佳方法?_C#_Sql Server_Unit Testing - Fatal编程技术网

C# 使用生产数据库数据进行单元测试数据库数据的最佳方法?

C# 使用生产数据库数据进行单元测试数据库数据的最佳方法?,c#,sql-server,unit-testing,C#,Sql Server,Unit Testing,我想知道是否有人能告诉我从真实的实时数据库填充测试数据库中的测试数据的最佳方法?(用于单元测试) 比如说。我有一个Sql Server数据库,其中包含1000条记录。我想在我的C#测试项目中使用这些数据作为测试用例。手动创建数据将非常耗时 我认为最好的方法是生成c代码,以便在运行测试时在测试数据库中重新创建数据。但人们会怎么做呢?或者,在这种情况下,人们通常只是导出一个大的SQL语句,然后对测试数据库执行它 另一种显而易见的方法是使用生产数据库的副本。我的问题是,数据结构仍在变化…这导致了问题

我想知道是否有人能告诉我从真实的实时数据库填充测试数据库中的测试数据的最佳方法?(用于单元测试)

比如说。我有一个Sql Server数据库,其中包含1000条记录。我想在我的C#测试项目中使用这些数据作为测试用例。手动创建数据将非常耗时

我认为最好的方法是生成c代码,以便在运行测试时在测试数据库中重新创建数据。但人们会怎么做呢?或者,在这种情况下,人们通常只是导出一个大的SQL语句,然后对测试数据库执行它

另一种显而易见的方法是使用生产数据库的副本。我的问题是,数据结构仍在变化…这导致了问题

我正在使用SQLServerLocalDB,C#


非常感谢您提供的任何建议

我成功地使用了microsoft的一个工具(免费)复制了中小型数据,您可以在此处查看:


如果数据没有太多的列,您也可以使用HeidiSQL及其CSV导出导入功能。实际上,这也是免费的。

SQL Server允许您导出包含其数据的create数据库。它还允许您创建备份,从中可以创建副本。人们通常使用其中一种方法从productio的副本中存储数据库。在visual studio中使用sql server数据库项目。您可以编写部署后/部署前脚本,然后发布数据库。这将允许您继续对架构进行更改。话虽如此,单元测试不应该依赖于数据库。这些都是集成测试。使用实时数据的副本进行测试(虽然比较容易)不是一个好的做法。根据您居住的地方,如欧洲,这样做可能会导致巨额罚款:我认为最好的方法是创建一个临时数据库,它是生产数据库的副本。此外,转移的目的是,在将修复部署到生产环境之前,您还可以将其作为bug和修复测试。您如何知道prod数据副本涵盖了您的所有测试用例?并不是说最好创建自己的小型测试数据集,这样您就可以确保涵盖所有情况,并且自动化测试运行得更快。