4

我在单元测试中对 app.config 文件有一些问题。vstest.console.exe 似乎忽略了它。当我使用 MStest 运行单元测试时,应用程序配置文件没有问题。

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

<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 与 /EnableCodeCoverage 只是“挂起”......如何调试,以及如何修复?应用程序配置可以添加到 vstest.executionengine.config (因为这是实际运行的 exe),但它对我不起作用,正如我之前所说,这个问题应该在应用程序级别解决。

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

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

4

1 回答 1

1

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

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

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

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

在构建定义中设置 .runsettings 文件

图片来源

于 2015-07-25T14:12:14.980 回答