除非删除App.Config,否则不会发现Visual Studio 2017单元测试

时间:2017-09-21 08:37:53

标签: c# unit-testing visual-studio-2017

这是最奇怪的事情。我有一个包含多个类库项目(所有.Net Framework 4.7)和多个单元测试项目的解决方案来测试这些类库。偶尔我升级我的NuGet包以使它们保持最新,其中一些升级将app.config文件引入测试项目。引入该app.config后,Visual Studio将不再发现这些测试,因此在每次构建后都不再运行它们。考虑到失败的测试是一个纠正代码的触发器,这就产生了一个场景,我们会引入未通过单元测试的代码,但由于我们非常依赖自动化,我们认为它成功了。

总结: - app.config的存在使VS2017无法在包含app.config的项目中发现测试,即使app.config完全为空。只有删除配置文件才能使VS2017重新发现测试 - 解决方案中的所有内容都以.Net Framework 4.7为目标 - 更新所有Nuget包,包括MsTest Adapter和TestFramework - app.config文件仅使用assemblybinding条目填充,例如:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.1.2" newVersion="4.1.1.2" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

1 个答案:

答案 0 :(得分:1)

找到了犯罪者,以为我会分享以防其他人遇到这种情况。将System.Runtime NuGet包添加到我的测试项目后,VS2017发现了测试。