背景:在我们的项目中,我们有一堆xml文件,用于定义加载到报告生成器中的测试。由于我们要确保我们的测试保持准确,我们设置了数据驱动的单元测试来测试xml输入产生相同的输出。这是目前在一个大型excel电子表格中,并与Visual Studio的数据驱动单元测试一起使用。但是,这会导致问题,因为通常不止一个开发人员会进行测试,他们需要让电子表格添加单元测试。如果另一个开发人员有电子表格,那么由于VS无法合并excel文件,他们会等待它重新进行检查。另外,我们想要切换到git,由于缺少对签出的锁定和无法合并二进制文件,这种方法在那里也不会很好用。
因此,我们尝试切换到为文件夹中的每个单独测试的单元测试集合设置单独的文件。然后,当运行单元测试时,我们加载文件夹中的所有文件并在每个文件中运行测试数据。这样,当开发人员进行新测试时,他们只需要为单元测试添加新文件,而不必将条目添加到中心文件。
所有文件的数据格式都是相同的,所以实际上,即使将它们连接在一起也应该有效。但是,我正在尝试这样做并保留数据驱动的行为,其中测试数据中的每一行等同于输出中的一个测试;它们都分别通过或失败/产生输出消息。
是否可以从多个文件中运行数据驱动的单元测试?如果是这样,我们仍然可以在结果中保留“一行==一个测试”样式输出吗?
答案 0 :(得分:0)
我为单元测试类创建了一个ClassInitialize方法,并使该类包含我作为部署项所需的文件文件夹。然后,ClassInitialize方法获取文件夹中的所有数据文件并将它们连接在一起。然后,类中的其他测试在其DataSource属性中引用此文件。这允许我使用多文件布局并仍然保留我们想要的输出样式。
主要教训:显然,数据驱动单元测试的数据源文件不必在编译时存在。