测试项目中的App.config

jqw*_*wha 31 .net asp.net tdd .net-assembly

我正在VS2010中构建一个ASP.NET应用程序.我有许多单独的程序集(类库)和相应的Test项目.

在其中一个类库中,我使用App.config文件来存储设置.程序集本身使用以下代码来检索设置:

 string tmp = ConfigurationManager.AppSettings["mySetting"];
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试在单独的测试项目中创建单元测试时,测试不会获取App.config文件中的设置.如果我将App.config文件复制到Test项目中,它可以正常工作.

如何确保每个程序集使用自己的App.config文件副本.如果我不得不复制配置文件,它会引入问题.还有一个问题,因为可能有多个配置文件,每个程序集一个 - 它们如何在一个测试项目中共存?

谢谢!

nun*_*axe 54

好吧,如果您需要在多个项目中共享App.config文件,我只需在每个项目中"添加为链接"原始App.config文件.

假设你有原始App.config的ProjectA.然后你有ProjectATest1ProjectATest2.在每个TestX项目中:

  1. 右键单击Visual Studio中的解决方案名称
  2. 选择"添加现有项目"
  3. 导航到ProjectA App.config并选择它
  4. 单击"添加"按钮向下箭头
  5. 选择"添加为链接"

它将在每个TestX项目中创建一个App.config快捷方式.如果你改变它,它会随处变化.

希望这可以帮助.


for*_*rir 6

首先,如果您正在进行单元测试,那么您可能希望看一下模拟配置,而不是无论如何都要读取它.

如果你真的想让配置可用(我以前为集成测试做过),那么你可以为你的程序集添加一个构建后的步骤(我假设1-1的程序集映射到测试 - 组件).

post build步骤(在你的测试程序集上)看起来像这样:

  copy /y  "<path to your assembly under test>.dll.config" "$(TargetDir)\$(TargetName).dll.config"
Run Code Online (Sandbox Code Playgroud)

基本上,您正在复制已由visual studio为您正在测试的程序集重命名的app.config,以匹配测试程序集的预期配置名称.