使用配置文件指定连接字符串以在单元测试中定义数据源

时间:2019-01-15 14:14:59

标签: c# unit-testing

我指的是使用app.config文件中的连接字符串创建数据驱动的单元测试用例的文章。

https://docs.microsoft.com/en-us/visualstudio/test/walkthrough-using-a-configuration-file-to-define-a-data-source?view=vs-2017

[TestClass]
public class IntegrationTest
{
    public TestContext TestContext { get; set; }

    [TestMethod]
    [DataSource("MySQLDataSource")]
    public void TestRequestSummary()
    {
        string customerId = TestContext.DataRow["MessageId"].ToString();
        Assert.IsNotNull(customerId);
    }
}

App.config

<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="MySQL" 
             connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MYPortal;Integrated Security=True;" 
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
    <microsoft.visualstudio.testtools>
        <dataSources>
            <add name="MySQLDataSource" connectionString="MySQL" 
                 dataTableName="ServiceLog" dataAccessMethod="Sequential"/>
        </dataSources>
    </microsoft.visualstudio.testtools>
</configuration>

当我尝试调试测试用例时,它失败并显示以下错误:

  

Result2 StackTrace:

     

在Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.TestDataSource.GetData(ITestMethod testMethodInfo,ITestContext testContext)

     

Result2消息:“ Microsoft.VisualStudio.TestTools.UnitTesting.TestConfiguration”的类型初始值设定项引发了异常。

有人可以帮我解决这个问题吗?

环境:

  • Visual Studio 2017
  • Microsoft.VisualStudio.TestTools.UnitTesting
  • .Net Framework 4.6

1 个答案:

答案 0 :(得分:0)

我使用MSTest v2作为我的单元测试框架,看来他们已经更改了此特定版本的配置部分。

我在以下线程中找到了答案:

https://github.com/Microsoft/testfx/issues/129#issuecomment-354124544

代码:

将我的app.config文件更改为:

<section name="microsoft.visualstudio.testtools"
         type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection,
         Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions"/>