4

我有一个 PowerShell 脚本,它可以通过外壳nunit-console-x86.exe到 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 用于配置设置吗?

4

3 回答 3

3

解决方案是使用控制台开关/domain=multiple。当您将默认域使用设置更改为每个程序集使用单独的 AppDomain 时,它会导致 NUnit 加载项目 app.config。此选项仅在 NUnit 2.5 或更高版本中可用。

nunit-console your.project.csproj /domain=multiple
于 2014-04-02T18:03:06.420 回答
1

不确定这是否仍然适用于 OP 的问题,但是当您构建测试项目时,会复制多个 .dll.config 文件。如果您需要为测试进行自定义配置,请将 .config 复制到测试项目中。然后在Properties窗格中设置Copy to Output DirectoryCopy Always,这将覆盖项目配置文件。

于 2017-11-17T16:51:28.393 回答
0

快速回答是 NUnit 不管理配置文件。它将配置文件的处理留给框架:

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

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

于 2012-10-05T18:00:12.033 回答