VS单元测试的数据源配置,出错
**出错信息为:
“单元测试适配器引发异常: System.Data.Odbc.OdbcException: ERROR [42000] [Microsoft][ODBC Excel Driver] 不能更新。数据库或对象为只读。
ERROR [IM006] [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败
ERROR [42000] [Microsoft][ODBC Excel Driver] 不能更新。数据库或对象为只读。”
**操作步骤为:
1.在测试项目TestProject1中添加App.Config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</configSections>
<connectionStrings>
<add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=ch05.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc"/>
</connectionStrings>
<microsoft.visualstudio.testtools>
<dataSources>
<add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
</dataSources>
</microsoft.visualstudio.testtools>
</configuration>
2.在测试文件Form1Test.cs文件中,添加测试方法,使用配置文件定义的数据源
[TestMethod()]
[DeploymentItem("ch05.xls")]
[DataSource("MyExcelDataSource")]
public void MyTestMethod2()
{
//数据驱动的方式(使用App.Config定义的数据源)
Form1 target = new Form1();
TestProject1.AUT_Form1Accessor accessor = new TestProject1.AUT_Form1Accessor(target);
//获取测试输入数据的第一列,作为被测试方法的输入参数
int i = Int32.Parse(testContextInstance.DataRow.ItemArray[0].ToString());
//获取测试输入数据的第二列,作为被测试方法的输入参数
int j = Int32.Parse(testContextInstance.DataRow.ItemArray[1].ToString());
//获取测试输入数据的第三列,作为预期结果
int expected = Int32.Parse(testContextInstance.DataRow.ItemArray[2].ToString());
int actual;
actual = accessor.Add(i, j);
Assert.AreEqual(expected, actual, "AUT.Form1.Add 未返回所需的值。");
}
3.excel文件的路径和App.Config、Form1Test.cs在同一层,excel文件名字为ch05.xls
4.得到出错信息如下:
“单元测试适配器引发异常: System.Data.Odbc.OdbcException: ERROR [42000] [Microsoft][ODBC Excel Driver] 不能更新。数据库或对象为只读。
ERROR [IM006] [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败
ERROR [42000] [Microsoft][ODBC Excel Driver] 不能更新。数据库或对象为只读。”