我在单元测试中遇到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没有问题,但在我的情况下它不合适。
有人见过这样的问题吗? 任何帮助将不胜感激。
答案 0 :(得分:1)
添加包含以下内容的legacymode.runsettings
文件
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<MSTest>
<ForcedLegacyMode>true</ForcedLegacyMode>
</MSTest>
</RunSettings>
您将强制Mstest在传统模式下运行,但它也会返回程序集加载的旧行为,并从测试项目的app.config
中获取设置。
您还可以通过在构建定义中指定源代码管理存储库中的.runsettings
路径来为构建服务器配置旧版模式: