【问题标题】:How to disable parallelization of xunit assemblies如何禁用 xunit 程序集的并行化
【发布时间】:2020-09-01 09:16:49
【问题描述】:

我有一个用 c# 编写的解决方案,.netcore 2.2,测试框架是 xunit,看起来很像这样:

-src

  --controllers

  --services

-test

  --controllers.integrationtest

  --services.integratiotest

我们正在对使用相同数据库 (solutionname.test) 的两个不同 dll(controllers.integrationtest.dll 和 services.integrationtest)执行一些集成测试

现在,当我在解决方案上运行 "dotnet test" 时,似乎两个 dll 正在尝试访问相同的资源(数据库),而一个 dll 陷入了死锁。

问题是,当我运行“dotnet test”以避免死锁时,我想禁用 dll 的并行执行,所以我搜索它并且文档说要禁用 dll 的并行执行,你必须:

  1. 在我所做的 csproject 的根目录中添加 xunit.runner.json 并且工作正常。 (这是在 Visual Studio 上工作的,因为我使用另一个删除测试名称的“_”字符的功能对其进行了测试:[methodDisplay]

  2. 将 xunit.runner.json 文件配置为始终复制或在 Visual Studio 中保留最新版本,以便在 bin 文件夹中复制(与任何 appsetings.json 文件一样)

我读到你可以在 assemblyInfo.cs 文件中放置一个程序集属性,顺便说一下,它似乎被普通的 csproj 替换了,所以我有点困惑。

我想要实现的最终目标是,当 devops 使用 dotnet 测试时,集成测试不会因并发问题而崩溃。

【问题讨论】:

标签: c# .net-core integration-testing devops xunit


【解决方案1】:

在 xUnit 中,ParallelizeAssemblies 的默认值为 false,所以我只能假设 dotnet test 的行为导致两者一起执行。

尝试使用 dotnet vstest 运行测试。这需要已构建 DLLS。

dotnet vstest **/*test.dll

【讨论】:

    猜你喜欢
    • 2015-09-17
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 2016-05-05
    • 1970-01-01
    相关资源
    最近更新 更多