vsts加载测试数据源问题

时间:2010-03-23 19:50:23

标签: c# .net visual-studio-2008

我使用使用数据源的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);
    }
}

任何想法?

2 个答案:

答案 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部分,问题就解决了。

希望这有帮助。