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

时间:2009-12-22 11:41:31

标签: .net unit-testing mstest data-driven-tests

这是我的方案,我想进行数据驱动的单元测试,并且与环境无关我想在我的程序集中嵌入数据文件。我如何在单元测试的DataSourceAttribute中引用呢?

我正在尝试使用Microsoft Jet OleDB Provider访问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]

1 个答案:

答案 0 :(得分:2)

我怀疑JET OLEDB是否支持基于嵌入式资源连接数据库。我认为有两种方法可以解决这个问题:

<强> 1。提取资源

在您的考试ClassInitialize中,您可以extract the assembly resource到已知位置。请参阅JET连接字符串中的此已知位置。在测试ClassCleanup中再次清理提取的文件。

<强> 2。编写自己的数据源

可能能够编写自己的DbProviderFactory,支持访问嵌入式Excel文件。要使mstest可以发现这样的工厂,您必须register your factory使用DbProviderFactories

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

相关问题