【发布时间】:2014-10-23 09:20:01
【问题描述】:
我正在帮助一个由于测试失败而导致构建开始失败的团队。
失败是由于缺少连接字符串配置引起的。我检查了有关配置文件的常见问题,以确保使用正确的名称指定连接字符串。
最后,我获得了配置文件的完整路径,以检查构建服务器上的配置文件是否包含预期的确切配置。
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
路径未指向TestProject.exe.config 文件,而是指向以下位置的vstest.executionengine.x86.exe.Config:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.x86.exe.Config
此文件根本不包含任何连接字符串。
当我从配置中写出所有可用的连接字符串时,我会得到默认的连接字符串:
名称:LocalSqlServer 连接:数据源=.\SQLEXPRESS;集成 Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;用户 实例=真。中止测试执行。
这来自 machine.config 文件 (kudos petelids)。
所以最大的问题是:
为什么使用vstest.executionengine.x86.exe.Config 而不是app.config(在运行时TestProject.exe.config)? (我可以猜测这是因为运行的进程是测试运行程序,但我认为可以公平地说,您希望测试运行程序让测试项目使用自己的配置文件,这通常会发生)。
【问题讨论】:
-
只是猜测可能是在注册表中定义的
-
也许它来自 machine.config 文件? -
%windir%\Microsoft.NET\Framework\[version]\config\machine.config或%windir%\Microsoft.NET\Framework64\[version]\config\machine.config用于 64 位 -
@petelids - 恰到好处。它之所以使用它是因为
vstest.executionengine.x86.exe.Config中没有连接字符串 - 那么到底为什么它使用vstest.executionengine.x86.exe.Config而不是测试项目的 app.config 呢? -
@SteveFenton - 我不太确定说实话但是 this SO question may help?请注意问题中的 EDIT/RESOLUTION。
标签: c# continuous-integration integration-testing