nUnit测试寻找{assembly-name}.dll.config文件

4

我有一个PowerShell脚本,它通过调用nunit-console-x86.exe来运行在先前通过调用MSBuild编译VS .sln后生成的程序集(DLL)中的测试。

Exec { invoke-expression "$BUILD_DIR\Tools\NUnit.2.5.10.11092\nunit-console-x86.exe  $full_test_assembly_name /xml:test-results/$test_results_file_name" }

一些测试利用System.Configuration.ConfigurationManager来加载配置设置。 nunit-console-x86.exe{$full_test_assembly_name}.dll.config中搜索这些配置设置,但由于我的脚本没有创建此文件(原因如下),因此此文件不存在。
每个测试项目的.csproj都包括一个本地的App.config文件。当在Visual Studio中运行测试项目的测试时,nUnit会在本地的App.config中搜索配置设置。这种行为与我预期的一样。
我还有一个应用程序.sln,其中有一个站点/服务.csproj作为启动项目,以及对各种测试项目的引用。当我从Visual Studio运行应用程序.sln的整个测试套件时,在运行任何测试项目的测试时,nUnit会在测试项目的本地App.config中搜索配置设置。
这种行为与我预期的不同 - 我本以为nUnit会搜索位于启动站点/服务.csproj中的web.config。
作为一个实验,我从一个测试项目中删除了App.config。现在,当我在Visual Studio中运行其测试时,nUnit会抛出错误,说找不到{test-project-assembly-name}.dll.config。因此,uUnit默认情况下会在{test-project-assembly-name}.dll.config中搜索配置设置。
我希望我的测试脚本调用nUnit来运行测试程序集测试,以便从web.config中加载任何配置设置(我的构建脚本将其复制到构建目标目录中)。
我该如何实现这一点?我可以指示nunit-console-x86.exe从我提供的配置文件路径加载配置设置吗?我可以以不同的方式构建我的.sln和/或.csproj,以便让uUnit使用Web.config进行配置设置吗?
3个回答

3
这个问题的解决方案是使用控制台开关/domain=multiple。当您将默认域使用设置更改为每个程序集使用单独的AppDomain时,它会导致NUnit加载项目的app.config。此选项仅适用于NUnit 2.5或更高版本。
nunit-console your.project.csproj /domain=multiple

1

不确定这是否适用于原帖的问题,但在构建测试项目时,会复制多个.dll.config文件。如果需要为测试使用自定义配置,请将.config复制到测试项目中。然后在属性窗格中设置复制到输出目录始终复制,这将覆盖项目的配置文件。


0
简单来说,NUnit 不管理配置文件。它将配置文件的处理留给了框架:

http://nunit.net/blogs/?p=9

如果你想让 NUnit 使用特定的配置文件,你可以创建一个 NUnit 项目,并将你希望使用的配置文件复制到 [NUnitProjectName].config。这个配置文件需要与你的 NUnit 项目位于同一个目录下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接