寻找 assembly-name.dll.config 的 nUnit 测试
Posted
技术标签:
【中文标题】寻找 assembly-name.dll.config 的 nUnit 测试【英文标题】:nUnit tests looking for assembly-name.dll.config寻找 assembly-name.dll.config 的 nUnit 测试 【发布时间】:2012-09-16 07:36:21 【问题描述】:我有一个 PowerShell 脚本,它转出到 nunit-console-x86.exe
以运行程序集 (DLL) 中的测试,这些程序集 (DLL) 是在脚本中通过转入 MSBuild 以编译 VS .sln 来编译的。
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 用于配置设置吗?
【问题讨论】:
【参考方案1】:不确定这是否仍然适用于 OP 的问题,但是当您构建测试项目时,会复制多个 .dll.config 文件。如果您需要为测试进行自定义配置,请将 .config 复制到测试项目中。然后在Properties
窗格中将Copy to Output Directory
设置为Copy Always
,这将覆盖项目配置文件。
【讨论】:
【参考方案2】:解决方案是使用控制台开关/domain=multiple
。当您将默认域使用设置更改为每个程序集使用单独的 AppDomain 时,它会导致 NUnit 加载项目 app.config。此选项仅在 NUnit 2.5 或更高版本中可用。
nunit-console your.project.csproj /domain=multiple
【讨论】:
【参考方案3】:快速回答是 NUnit 不管理配置文件。它将配置文件的处理留给框架:
http://nunit.net/blogs/?p=9
如果您希望 NUnit 使用特定的配置文件,您可以创建一个 NUnit 项目,并将您希望使用的配置文件复制到 [NUnitProjectName].config 中。此配置文件需要与您的 NUnit 项目位于同一目录中。
【讨论】:
以上是关于寻找 assembly-name.dll.config 的 nUnit 测试的主要内容,如果未能解决你的问题,请参考以下文章