这是我的方案,我想进行数据驱动的单元测试,并且与环境无关我想在我的程序集中嵌入数据文件。我如何在单元测试的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]
答案 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
开始跟踪。