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]
我怀疑 JET OLEDB 是否具有开箱即用的支持连接到基于嵌入式资源的数据库。我看到有两个选项可以解决这个问题:
1.提取资源
在测试的ClassInitialize中,您可以将程序集资源提取到已知位置。请参阅 JET 连接字符串中的这个已知位置。在测试的ClassCleanup中再次清理提取的文件。
2.编写自己的数据源
您也许可以编写自己的DbProviderFactory,它支持访问嵌入的 excel 文件。要使 mstest 可以发现这样的工厂,您必须使用DbProviderFactories注册您的工厂。
Microsoft.VisualStudio.QualityTools.Common.dll要了解 mstest 如何在内部处理数据源,请使用Reflector打开程序集并开始通过反汇编来追踪Microsoft.VisualStudio.TestTools.Utility.TestDataConnection.Create。