2009-12-22 26 views
5

这是我的场景,我想做一个数据驱动的单元测试,并且为了与环境无关,我想将数据文件嵌入到我的程序集中。我如何在单元测试的DataSourceAttribute中引用呢?如何引用嵌入式数据文件进行数据驱动的单元测试?

我正在尝试使用Microsoft Jet OleDB Provider访问Excel 2003文件。当文件位于硬盘驱动器中时,单元测试可以正常工作,但当我尝试访问嵌入式装配文件时不会。这是我的例子:

原始

[DeploymentItem( “IHRM.Infrastructure.EFRepositories.Tests \ DataDriven.xls”),数据源( “System.Data.OleDb”,“提供者= Microsoft.Jet .OLEDB.4.0;数据源= | 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]

+0

你有没有实现Wim的建议?如果是,你可以发布一些示例代码吗? – 2012-10-06 23:19:35

回答

2

我怀疑JET OLEDB是否支持连接基于嵌入式资源的数据库。我看到两个选项来解决此问题:

1.提取物的资源

在测试的ClassInitialize,你可以extract the assembly resource到一个已知位置。请参阅您的JET连接字符串中的这个已知位置。在测试的ClassCleanup中再次清理解压缩的文件。

2.写自己的数据源

可能可以编写自己的DbProviderFactory它支持访问嵌入Excel文件。为了让这样一个工厂可以发现mstest,你必须register your factoryDbProviderFactories

要查看mstest如何在内部处理数据源,请使用reflector打开Microsoft.VisualStudio.QualityTools.Common.dll程序集,然后开始跟踪步骤,拆散Microsoft.VisualStudio.TestTools.Utility.TestDataConnection.Create

相关问题