Testfx: Upgraded to MSTest v2, The type initializer for 'Microsoft.VisualStudio.TestTools.UnitTesting.TestConfiguration' threw an exception

Created on 29 Mar 2017  路  7Comments  路  Source: microsoft/testfx

Question

Has anything changed around the DataSource attribute in MSTest v2? Were there any upgrade steps I need to perform?

Description

Have upgraded to MS Test v2 (v 1.1.13). Running my unit test gives:

Message: The type initializer for 'Microsoft.VisualStudio.TestTools.UnitTesting.TestConfiguration' threw an exception.

Result StackTrace:  
at Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.TestDataSource.GetConnectionProperties(DataSourceAttribute dataSourceAttribute, String& providerNameInvariant, String& connectionString, String& tableName, DataAccessMethod& dataAccessMethod)
   at Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.TestDataSource.RunDataDrivenTest(TestContext testContext, ITestMethod testMethodInfo, ITestMethod testMethod, TestMethodAttribute executor)

Steps to reproduce

I have the following attributes on my test:

    [TestMethod]
    [DataSource("NoteData")]
    [DeploymentItem(@".\TestFiles\ExcelFiles\TestData.xls")]
    [DeploymentItem(@".\TestFiles\Note", "NoteAck")]
    [DeploymentItem(@".\TestFiles\Note", @"TestFiles\NoteAck")]

In my app.config I have


 <microsoft.visualstudio.testtools>
    <dataSources>
      <add name="NoteData" connectionString="TestDataConnection" dataTableName="IssueNoteAck$" dataAccessMethod="Sequential" />
    </dataSources>
  </microsoft.visualstudio.testtools>

<connectionStrings>    
    <add name="TestDataConnection" connectionString="Driver={Microsoft Excel Driver (*.xls)}; dbq=TestData.xls; defaultdir=.; driverid=790; maxbuffersize=2048; pagetimeout=5; readonly=true;" providerName="System.Data.Odbc" />
  </connectionStrings>

Expected behavior

Test would pass as previously

Actual behavior

As above with exception and stack trace

Environment

Using VS 2017 15.0.0-RTW+26228.4
Win 7
  <package id="MSTest.TestAdapter" version="1.1.13" targetFramework="net462" />
  <package id="MSTest.TestFramework" version="1.1.13" targetFramework="net462" />
.Net Framework v4.6.2
bug compat

Most helpful comment

Of course!

We went from this

<?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=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </configSections>
  <connectionStrings>
    <add name="UnitTestConnection" connectionString="AConnectionString" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <microsoft.visualstudio.testtools>
    <dataSources>
      <add name="TestDataSource" connectionString="UnitTestConnection" dataTableName="UnitTestTable" dataAccessMethod="Sequential" />
    </dataSources>
  </microsoft.visualstudio.testtools>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
</configuration>

to this

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <configSections>
    <section name="microsoft.visualstudio.qualitytools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
  </configSections>
  <connectionStrings>
    <add name="UnitTestConnection" connectionString="AConnectionString" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <microsoft.visualstudio.qualitytools>
    <dataSources>
      <add name="TestDataSource" connectionString="UnitTestConnection" dataTableName="UnitTestTable" dataAccessMethod="Sequential" />
    </dataSources>
  </microsoft.visualstudio.qualitytools>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
</configuration>

I actually can't remember where I found microsoft.visualstudio.qualitytools, I think it was somewhere in this repo actually!
Edit: forgot to mention that this was with 1.1.8.

All 7 comments

@stephen-nba : Thanks for reporting this. This definitely looks like a bug. Does this work if you provide the connection details inline in the DataSource attribute itself instead of in the configuration file?

Wondering if there's been any movement on this? Our tests have quite a few DataSources defined in the same way, so our move to MSTest v2 is on hold for now...

Actually, I seem to have found the fix! The issue was the old configSections declaration at the top of the app.config.
I found that changing the previous one from
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
to
<section name="microsoft.visualstudio.qualitytools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions"/>
and switching the <microsoft.visualstudio.testtools> around the dataSources to <microsoft.visualstudio.qualitytools> makes everything work again!

Great you were able to unblock yourself @smenus. Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral would have to be changed but microsoft.visualstudio.testtools should work too. This does look like a different config from the original poster though. Can you share your entire config section please?

Of course!

We went from this

<?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=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </configSections>
  <connectionStrings>
    <add name="UnitTestConnection" connectionString="AConnectionString" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <microsoft.visualstudio.testtools>
    <dataSources>
      <add name="TestDataSource" connectionString="UnitTestConnection" dataTableName="UnitTestTable" dataAccessMethod="Sequential" />
    </dataSources>
  </microsoft.visualstudio.testtools>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
</configuration>

to this

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <configSections>
    <section name="microsoft.visualstudio.qualitytools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
  </configSections>
  <connectionStrings>
    <add name="UnitTestConnection" connectionString="AConnectionString" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <microsoft.visualstudio.qualitytools>
    <dataSources>
      <add name="TestDataSource" connectionString="UnitTestConnection" dataTableName="UnitTestTable" dataAccessMethod="Sequential" />
    </dataSources>
  </microsoft.visualstudio.qualitytools>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
</configuration>

I actually can't remember where I found microsoft.visualstudio.qualitytools, I think it was somewhere in this repo actually!
Edit: forgot to mention that this was with 1.1.8.

microsoft.visualstudio.testtools is working perfectly fine with MSTestV2.
i.e. final app.config may look something like this:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
  </configSections>
  <connectionStrings>
    <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=testdatasource.mdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
  </connectionStrings>
  <microsoft.visualstudio.testtools>
    <dataSources>
      <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
    </dataSources>
  </microsoft.visualstudio.testtools>
</configuration>

@jayaranigarg @Smenus

Could you guys please have a look at my app.config because I am still getting the error, tried replacing testtools with qualitytools as well. Still its not working



type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection,
Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>









Was this page helpful?
0 / 5 - 0 ratings