【发布时间】:2010-05-06 17:19:00
【问题描述】:
我正在使用 VSTS 2K8,并且我已经建立了一个单元测试项目。在其中,我有一个带有执行简单断言的方法的测试类。我使用 Excel 2007 电子表格作为我的数据源。
我的测试方法如下:
[DataSource("System.Data.Odbc",
"Dsn=Excel Files;dbq=|DataDirectory|\\MyTestData.xlsx;defaultdir=C:\\TestData;driverid=1046;maxbuffersize=2048;pagetimeout=5",
"Sheet1",
DataAccessMethod.Sequential)]
[DeploymentItem("MyTestData.xlsx")]
[TestMethod()]
public void State_Value_Is_Set()
{
string expected = "MD";
string actual = TestContext.DataRow["State"] as string;
Assert.AreEqual(expected, actual);
}
如方法装饰属性中所示,我的 Excel 电子表格位于本地 C:/ 驱动器上。其中,我所有数据所在的工作表名为“Sheet1”。
我已将 Excel 电子表格复制到我的项目中,并将其 Build Action = "Content" 设置为 Copy to Output Directory = "Copy if Newer"。
在尝试运行这个简单的单元测试时,我收到以下错误:
单元测试适配器连接数据源或读取数据失败。有关解决此错误的详细信息,请参阅 MSDN 库中的“数据驱动单元测试故障排除”(http://go.microsoft.com/fwlink/?LinkId=62412)。 错误详细信息:错误 [42S02] [Microsoft][ODBC Excel 驱动程序] Microsoft Office Access 数据库引擎找不到对象“Sheet1”。确保对象存在并且正确拼写其名称和路径名。
我已验证工作表名称拼写正确(即 Sheet1),并且我已验证我的数据源设置正确。
网络搜索根本没有出现太多。我完全被难住了。
感谢所有帮助或输入!!!!
【问题讨论】:
-
工作表名称应该附加一个“$”,否则肯定会失败(对于 Visual Studio 2015 仍然有效),例如:“Sheet1$”
标签: c# unit-testing