如何引用嵌入式数据文件进行数据驱动的单元测试?

Jav*_*ier 5 .net unit-testing mstest data-driven-tests

这是我的场景,我想进行数据驱动的单元测试,并且与环境无关我想在我的程序集中嵌入数据文件.我怎样才能在单元测试的DataSourceAttribute中引用呢?

我正在尝试使用Microsoft Jet OleDB提供程序访问Excel 2003文件.当文件在硬盘驱动器中时,单元测试工作正常,但在我尝试访问嵌入式组装文件时则不行.这是我的例子:

原版的

[DeploymentItem("IHRM.Infrastructure.EFRepositories.Tests\DataDriven.xls"),DataSource("System.Data.OleDb","Provider = Microsoft.Jet.OLEDB.4.0; Data Source = | DataDirectory |\DataDriven.xls;扩展属性= \"Excel 8.0 \"","Sheet1 $",DataAccessMethod.Sequential),TestMethod]

建议

[DataSource("System.Data.OleDb","Provider = Microsoft.Jet.OLEDB.4.0; Data Source = "这里放什么" ;扩展属性= \"Excel 8.0 \"","Sheet1 $",DataAccessMethod. Sequential),DeploymentItem("IHRM.Infrastructure.EFRepositories.Tests\DataDriven.xls"),TestMethod]

Wim*_*nen 2

我怀疑 JET OLEDB 是否具有开箱即用的支持连接到基于嵌入式资源的数据库。我看到有两个选项可以解决这个问题:

1.提取资源

在测试的ClassInitialize中,您可以将程序集资源提取到已知位置。请参阅 JET 连接字符串中的这个已知位置。在测试的ClassCleanup中再次清理提取的文件。

2.编写自己的数据源

也许可以编写自己的DbProviderFactory,它支持访问嵌入的 excel 文件。要使 mstest 可以发现这样的工厂,您必须使用DbProviderFactories注册您的工厂

Microsoft.VisualStudio.QualityTools.Common.dll要了解 mstest 如何在内部处理数据源,请使用Reflector打开程序集并开始通过反汇编来追踪Microsoft.VisualStudio.TestTools.Utility.TestDataConnection.Create