gpt4 book ai didi

c# - MSTest 和 app.config 问题

转载 作者:IT王子 更新时间:2023-10-29 04:05:13 25 4
gpt4 key购买 nike

我一直在尝试使用 MSTest 和 app.config 的部署来自动运行单元测试。我阅读了多篇文章和博客,尝试了多种方法,但在 MSTest 执行期间似乎仍未获取 app.config。拥有一个包含我使用 msbuild 构建的所有单元测试的 dll,这是我尝试过的...

尝试 1

  1. 将 app.config 复制到与 MyTests.dll 和 MyTests.dll.config 相同的位置(在一个 msdn 论坛上,据说它会被自动拾取)
  2. 为每个测试添加了 [DeploymentItem("MyTests.dll.config")] 属性
  3. 运行 MSTest.exe/noisolation/testcontainer:d:\MyTestTests.dll/test:MyTest

尝试 2

  1. 创建了包含以下内容(如下)的 local.testrunco​​nfig 文件
  2. 使用/runco​​nfig 运行 mstest,没有隔离,但没有执行任何操作:MSTest.exe/runco​​nfig:d:\local.testrunco​​nfig/testcontainer:d:\MyTestTests.dll/test:MyTest

结果:加载 d:\local.testrunco​​nfig...
d:\local.testrunco​​nfig
d:\local.testrunco​​nfig

... 什么也没有发生:没有错误,没有执行测试!


编辑/解决方案:默认情况下,MSTest 在单独的进程中执行测试。在这种情况下,如果配置文件的名称类似于“dllname.dll.config”,则会自动获取配置文件。但是,如果在 VS 之外运行,则很难调试在单独进程中运行的测试。/noisolation 开关用于使 MSTest 在一个进程中运行所有测试。但是,在这种情况下,测试配置文件是NOT 拾取的。而是使用 MSTest.exe.config 文件,该文件位于与 MSTest 相同的目录中。要解决此问题,可以像这样实用地加载配置文件:


ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = @"path to config file";
Configuration config =
ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

最佳答案

凯特罗

我的设置如下所示(我正在使用 TFSbuild.proj 中的 msbuild):

  1. 构建sln

  2. 将输出中的所有内容复制到 %TEMP%(黑魔法 :D)不知道为什么,但 mstest 正在寻找 %TEMP% 中的引用。

  3. 使用参数运行 mstest:


"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" /nologo /testcontainer:$(TestDir)\mylib.dll /resultsfile:$(TestResultFile) /runconfig:$(SlnDir)\AutomaticBuildTest.testrunconfig /searchpathroot:$(TestDir) /publish:mytfsserver /publishbuild:$(BuildDefinition) /flavor:Debug /platform:AnyCPU /teamproject:mytfsproject

下面是 AutomaticBuildTest.testrunco​​nfig


<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="AutomaticBuildTest" id="eda99352-93e1-402e-9517-d04fffa66b35" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<!--<Deployment enabled="false" />-->
<Deployment enabled="true">
<DeploymentItem filename="D:\sa12\78\bin\Debug" />
</Deployment>
<NamingScheme baseName="BC2ALibraryTest" appendTimeStamp="false" useDefault="false" />
<!-- http://blogs.msdn.com/b/vstsqualitytools/archive/2009/12/01/executing-unit-tests-in-parallel-on-a-multi-cpu-core-machine.aspx -->
<Execution location="Local" hostProcessPlatform="MSIL">
<!--http://msdn.microsoft.com/en-us/library/ms404663.aspx-->
<ExecutionThread apartmentState="MTA" />
<Hosts skipUnhostableTests="false" />
<TestTypeSpecific>
<UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b">
<AssemblyResolution applicationBaseDirectory="D:\sa12\78\bin\Debug">
<TestDirectory useLoadContext="false" />
</AssemblyResolution>
</UnitTestRunConfig>
</TestTypeSpecific>
<AgentRule name="LocalMachineDefaultRole">
</AgentRule>
</Execution>
</TestSettings>

关于c# - MSTest 和 app.config 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4811778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com