【问题标题】:How can i reference an embedded data file for data-driven unit tests?如何为数据驱动的单元测试引用嵌入式数据文件?
【发布时间】:2009-12-22 11:41:31
【问题描述】:

这是我的场景,我想进行数据驱动的单元测试,并且为了独立于环境,我想将数据文件嵌入到我的程序集中。那么如何在单元测试的 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="这里放什么";Extended Properties=\"Excel 8.0\ "", "Sheet1$", DataAccessMethod.Sequential), DeploymentItem("IHRM.Infrastructure.EFRepositories.Tests\DataDriven.xls"), TestMethod]

【问题讨论】:

  • 你实施了Wim的建议吗?如果是,您可以发布一些示例代码吗?

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


【解决方案1】:

我怀疑 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 开始跟踪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 2012-11-05
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多