我被困在用MSTest和app.config的部署自动化单元测试的过程中。我读过多篇文章和博客,尝试过多种方式,但app.config在MSTest执行过程中似乎还没有被选中。有一个dll,其中包含用msbuild构建的所有单元测试,下面是我尝试过的.
尝试1
automagically)
MSTest.exe /noisolation /testcontainer:d:\MyTestTests.dll /test:MyTest
都会获取app.config [DeploymentItem("MyTests.dll.config")]属性)
企图2
MSTest.exe /runconfig:d:\local.testrunconfig /testcontainer:d:\MyTestTests.dll /test:MyTest
结果:加载d:\local.testrunconfig.
d:\local.testrunconfig
d:\local.testrunconfig
..。没有任何事情发生:没有错误,没有测试被执行!
默认情况下,EDIT/RESOLUTION:在单独的进程中执行测试。在这种情况下,如果配置文件被命名为"dllname.dll.config“,就会自动获取它。但是,如果测试运行在VS之外,则很难调试在单独进程中运行的测试。/noisolation开关用于使MSTest在一个进程中运行所有测试。但是,在这种情况下,测试配置文件是而不是拾取的。相反,使用MSTest.exe.config文件,该文件与MSTest位于同一个目录中。要解决此问题,可以按以下方式务实地加载配置文件:
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = @"path to config file";
Configuration config =
ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);发布于 2011-01-27 00:54:40
您的应用程序不使用app.config。它使用application.exe.config。这就是你需要部署的。
抱歉,没看到你在测试DLL。
这不是.NET配置的工作方式。每个DLL不使用自己的配置文件。它只能使用它正在运行的.exe的配置文件(实际上,它正在运行的AppDomain )。
假设.dll.config实际上是主机进程,您将需要让MSTEST将您的MSTEST添加到它自己的配置中。我不知道如何在命令行中这样做。
我通常在Visual中使用一个单元测试项目,所以我只需要从该项目中部署配置文件。效果很好。
发布于 2011-01-28 01:26:10
事实证明,问题在于我们过于复杂的构建环境,以及我们所使用的MSTest (本地生产的)和x-copiable版本。当我遇到VS2008“适当”MSTest时,以下命令成功:
"%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe" /testcontainer:d:\MyTests.dll /test:MyTests /resultsfile:results.trx
谢谢大家的回答!马吕斯,你让我用你的配置学到了新的东西。
https://stackoverflow.com/questions/4811778
复制相似问题