【发布时间】:2011-06-16 06:07:56
【问题描述】:
我一直在尝试使用 MSTest 和 app.config 部署来自动化单元测试运行。我阅读了多篇文章和博客,尝试了多种方法,但在 MSTest 执行期间似乎仍然没有获取 app.config。拥有一个包含我使用 msbuild 构建的所有单元测试的 dll,这就是我尝试过的...
尝试 1
- 使用 MyTests.dll 将 app.config 复制到与 MyTests.dll.config 相同的位置(在某个 msdn 论坛上,据说会自动获取)
- 为每个测试添加了
[DeploymentItem("MyTests.dll.config")]属性 - 跑
MSTest.exe /noisolation /testcontainer:d:\MyTestTests.dll /test:MyTest
尝试 2
- 创建了 local.testrunconfig 文件,内容如下(下)
- 使用 /runconfig 运行 mstest,没有隔离,但没有执行任何操作:
MSTest.exe /runconfig:d:\local.testrunconfig /testcontainer:d:\MyTestTests.dll /test:MyTest
结果:
正在加载 d:\local.testrunconfig...
d:\local.testrunconfig
d:\local.testrunconfig
...什么也没有发生:没有错误,没有执行任何测试!
编辑/解决: 默认情况下,MSTest 在单独的进程中执行测试。在这种情况下,如果配置文件命名为“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);
【问题讨论】:
-
map.ExeConfigFilename = @"配置文件路径";
标签: c# msbuild app-config mstest