在Unit Tests中有时需要读取测试运行者相关的变量,
比如: 不同的测试机器的目录结构不同, 测试机A的某个测试目录为C:\ABC, 而在测试机B上对应的目录为 D:\XYZ\ABC, 如果把这些信息硬编码在测试中就会影响测试的可移植性.
解决方案:
1.把这些信息存放在TestProject的app.config, 比如:
<appSettings file="user.config">
<add key="WebServerPhysicalPath" value="C:\WebRoot"/>
<add key="WebSiteUrl" value="http://localhost:8888/>
</appSettings>
注意: file="user.config"
2.在另一个文件 user.config中输入类似内容, 用户可在该文件中配置自己的变量. user.config不用放到SVN上.
<appSettings>
<add key="WebServerPhysicalPath" value="D:\UserJack\WebRoot"/>
</appSettings>
3.在Solution中添加一个TestRunConfig.testrunconfig, 双击打开Deployment页, 加入user.config文件. 这样, 每次运行测试, user.config都会被拷贝到测试目录中(类似TestResults\Jack 2010-02-03 22_26_58\Out).
4.在测试程序中访问配置变量:
string webRootPath = System.Configuration.ConfigurationSettings.AppSettings["WebServerPhysicalPath"];