C# 在多个输入文件上运行数据驱动的单元测试

C# 在多个输入文件上运行数据驱动的单元测试,c#,visual-studio-2010,unit-testing,C#,Visual Studio 2010,Unit Testing,背景:在我们的项目中,我们有一组xml文件,用于定义加载到报表生成器中的测试。因为我们希望确保测试保持准确,所以我们设置了数据驱动的单元测试来测试xml输入是否产生相同的输出。这是目前保存在一个大型excel电子表格中的,并且在VisualStudio的数据驱动单元测试中非常有效。但是,这会导致问题,因为通常不止一个开发人员在进行测试,他们需要获得电子表格来添加单元测试。如果另一个开发人员拥有该电子表格,那么他们将暂停等待它重新检入,因为VS无法合并excel文件。此外,我们希望切换到git,这

背景:在我们的项目中,我们有一组xml文件,用于定义加载到报表生成器中的测试。因为我们希望确保测试保持准确,所以我们设置了数据驱动的单元测试来测试xml输入是否产生相同的输出。这是目前保存在一个大型excel电子表格中的,并且在VisualStudio的数据驱动单元测试中非常有效。但是,这会导致问题,因为通常不止一个开发人员在进行测试,他们需要获得电子表格来添加单元测试。如果另一个开发人员拥有该电子表格,那么他们将暂停等待它重新检入,因为VS无法合并excel文件。此外,我们希望切换到git,这种方法在那里也不会很好地工作,因为签出时没有锁定,并且无法合并二进制文件

因此,我们正在尝试切换到在文件夹中为每个单独测试的单元测试集创建一个单独的文件。然后,当单元测试运行时,我们加载文件夹中的所有文件,并在每个文件中运行测试数据。这样,当开发人员进行新测试时,他们只需为单元测试添加一个新文件,而不必向中心文件添加条目

所有文件的数据格式都将是相同的,所以实际上,即使将它们连接在一起也应该可以。但是,我试图这样做,并保留数据驱动的行为,即测试数据中的每一行相当于输出中的一个测试;它们都分别通过或失败/生成输出消息


是否可以对多个文件运行数据驱动的单元测试?如果是这样,我们还能在结果中保留“一行==一个测试”样式的输出吗?

我最终为单元测试类提供了一个ClassInitialize方法,并使该类包含我需要的文件文件夹作为部署项。然后,ClassInitialize方法获取文件夹中的所有数据文件并将它们连接在一起。然后,类中的其他测试在其DataSource属性中引用了该文件。这允许我使用多文件布局,并且仍然保留我们想要的输出样式

由此得出的主要教训:显然,数据驱动单元测试的数据源文件不必在编译时存在