vstest.console.exe忽略app.config

时间:2015-07-25 12:10:02

标签: c# .net unit-testing app-config vstest

我在单元测试中遇到app.config文件的问题。它似乎被vstest.console.exe忽略了。当我使用MStest运行我的单元测试时,app配置文件没有问题。

配置文件必须解决一些程序集问题(重定向程序集版本)。 以下是此文件的内容:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="RhinoCommon"
          publicKeyToken="552281e97c755530"
          culture="neutral" />
        <bindingRedirect oldVersion="5.1.30000.4" newVersion="5.1.30000.14"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

当我将此代码移动到machine.config时,我的单元测试被成功重定向到使用另一个版本的程序集。但这种解决我的装配问题的方法是不合适的。单元测试项目必须在构建服务器上运行,并且有必要在应用程序级别上解决此问题。

在互联网上没有关于此类问题的信息。根据这个答案vstest.console.exe with /EnableCodeCoverage just "hangs"... how debug, and how to fix?,可以将app配置添加到vstest.executionengine.config(因为这是exe实际运行的),但它对我不起作用,正如我在此问题之前所说的那样在应用程序级别上解决。

使用MStest.exe,app.config没有问题,但在我的情况下它不合适。

有人见过这样的问题吗? 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

添加包含以下内容的legacymode.runsettings文件

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <MSTest>
    <ForcedLegacyMode>true</ForcedLegacyMode>
  </MSTest>
</RunSettings>

您将强制Mstest在传统模式下运行,但它也会返回程序集加载的旧行为,并从测试项目的app.config中获取设置。

您还可以通过在构建定义中指定源代码管理存储库中的.runsettings路径来为构建服务器配置旧版模式:

Setting a .runsettings file in your Build definition

Image source