寻找 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 测试的主要内容,如果未能解决你的问题,请参考以下文章

Matlab中find()寻找函数的常见用法

Spark - 寻找重叠值或寻找共同朋友的变体

寻找最长公共子串(高分)

洛谷P2296 寻找道路==codevs3731 寻找道路

你如何告诉神经网络的层去寻找/寻找特定的特征,比如眼睛和边缘?

梯度下降——寻找那个最优解