运行 xUnit.net 测试时的运行时文件夹结构

Runtime folder structure when running xUnit.net tests

我正在 .net 4.6.1 上开发 C# 网络应用程序 运行ning,它假定某些 dll 与正在执行的程序集位于同一文件夹中,并尝试从这些 dll 中导入某些类型MEF。当应用程序 运行ning 并且所有必需的 dll 都在 bin 文件夹中时,这工作正常,但是当 运行ning xUnit 测试最终得到 运行 的代码时我遇到了问题上面提到的假设。我正在 运行 使用 Visual Studio 2017 进行测试。

我遇到的问题是,当我 运行 进行 xUnit 测试时,它会创建一个临时文件夹,其中包含我在单元测试项目中的每个引用的子文件夹。在每个子文件夹中都有 单个 引用的 .dll 和 .pdb 文件以及 __AssemblyInfo__.ini 文件。显然,测试因 FileNotFoundException 而崩溃,因为想要使用 MEF 导入某些类型的代码无法在与执行程序集位置相同的文件夹中找到 dll。

有没有办法告诉 xUnit 将单元测试项目的所有引用放在一个文件夹中(比如 bin 文件夹?)并且 运行 使用该文件夹的测试?或者这可能是 Visual Studio 2017 年的设置?

您可以简单地禁用 shadowCopy,以便所有执行都使用您的输出文件夹。

要了解如何通过 JSON 配置 xUnit.net,请使用搜索引擎。