我使用使用数据源的vsts负载测试进行了一个简单的测试。源的连接字符串如下
<connectionStrings>
<add name="MyExcelConn" connectionString="Driver={Microsoft Excel Driver (*.xls)};Dsn=Excel Files;dbq=loginusers.xls;defaultdir=.;driverid=790;maxbuffersize=4096;pagetimeout=20;ReadOnly=False" providerName="System.Data.Odbc" />
</connectionStrings>
数据源配置如下
<microsoft.visualstudio.testtools>
<dataSources>
<add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="loginusers$" dataAccessMethod="Sequential" />
</dataSources>
</microsoft.visualstudio.testtools>
我收到了以下错误
TestError TestError 1,000单元测试适配器无法连接到数据源或读取数据。有关解决此错误的详细信息,请参阅MSDN Library中的“数据驱动单元测试疑难解答”(http://go.microsoft.com/fwlink/?LinkId=62412)。 错误详细信息:错误[42000] [Microsoft] [ODBC Excel驱动程序]无法更新。数据库或对象是只读的。 错误[IM006] [Microsoft] [ODBC驱动程序管理器]驱动程序的SQLSetConnectAttr失败 错误[42000] [Microsoft] [ODBC Excel驱动程序]无法更新。数据库或对象是只读的。
我写了一个测试,只是为了检查我是否可以创建一个odbc连接可以正常工作
测试如下
[TestMethod]
public void TestExcelFile()
{
string connString = ConfigurationManager.ConnectionStrings["MyExcelConn"].ConnectionString;
using (OdbcConnection con = new OdbcConnection(connString))
{
con.Open();
System.Data.Odbc.OdbcCommand objCmd = new OdbcCommand("SELECT * FROM [loginusers$]");
objCmd.Connection = con;
OdbcDataAdapter adapter = new OdbcDataAdapter(objCmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
Assert.IsTrue(ds.Tables[0].Rows.Count > 1);
}
}
任何想法?
答案 0 :(得分:2)
我一直在做同样的事情。 ConfigurationManager.ConnectionStrings引用当前项目的.config文件中的连接字符串。
然而,测试在他们自己的项目中运行;他们有自己的.config文件。我发现的唯一方法是执行以下操作:
1)进入测试运行配置并添加包含配置字符串的app.config或web.config作为部署项。
2)使用以下命令创建批处理文件:
copy app.config test_project_name.dll.config
3)将初始化脚本(在测试运行配置中)设置为步骤2中创建的批处理文件。
这是我心目中的一个障碍,但是一位高级同事告诉我,通常,.net框架不喜欢你使用ConfigurationManager的外部.config文件。当您执行步骤1-3时,您将App.config从原始项目复制到.net框架期望为您的测试项目找到.config文件的位置。
答案 1 :(得分:0)
我的测试项目中遇到了类似的问题。我的测试是调用Linq-To-Sql DataContext,而后者又引用了Web.config。由于我的测试项目没有web.config(或该mater的任何配置),因此找不到配置字符串。
我只是将一个App.config添加到测试项目中,并使用相应的connectionstrings部分,问题就解决了。
希望这有帮助。