【问题标题】:How to use multiple excel files as data source for unit test in C#?如何使用多个excel文件作为C#中单元测试的数据源?
【发布时间】:2023-03-26 20:55:01
【问题描述】:

我正在尝试制作一个具有来自多个 excel 文件的数据源的单元测试,每个 excel 文件都包含一个用于同一单元测试的测试用例。我想把所有的excel文件放在一个文件夹里,让单元测试程序遍历所有的excel文件。

我找到了几种方法,例如将所有测试用例存储在一个 XML 文件中,但是这种方法太繁琐了,因为我必须从 excel 文件中提取所有测试用例并将其放入同一个 XML 文件中。我希望能找到一种有效的方法来做到这一点。有什么建议吗?

【问题讨论】:

  • 到目前为止你尝试过什么?您使用的是哪个测试框架? XUnit、NUnit、MsTest?并且,哪个版本的 Visual Studio(如果是高级版)会提供一些额外的选项。
  • 如果是 MsTest,集成到框架中最优雅的方法是实现一个 DataProvider,您可以使用 DataSource 属性链接到一个测试用例。实现提供程序类似于构建自定义 ADO.NET 提供程序,并且需要实现几个接口。见:msdn.microsoft.com/en-us/library/…
  • 我正在使用 MS Visual Studio Professional 2013。我正在使用 Microsoft.VisualStudio.TestTools.UnitTesting 命名空间进行测试。
  • 对于xUnit,您将使用Theory

标签: c# visual-studio unit-testing mstest


【解决方案1】:

借助 Visual Studio 的标准测试框架 (MsTest),您可以在测试中使用 [DataSource] 属性绑定到数据源。默认情况下,这包括对 Excel 的支持,使用 Excel 的 OleDB 驱动程序。

但是,这假设您所有的测试用例都存在于同一个 Excel 文件中(因为您将使用一个简单的连接字符串来打开文件和选项卡)。如果您想从多个文件中获取案例,您需要通过实现命名空间from System.Data the technology behind this hasn't changed much since 2003 来实现您自己的数据提供程序。

如果您能够将您的 excel 文件合并到一个文件中,并且每个测试用例都在自己的行中,请you'd be able to use the standard DataSource attribute 将数据输入到您的测试中。

MsTest 始终假定您的数据采用表格格式。

【讨论】:

    猜你喜欢
    • 2019-11-15
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多