【问题标题】:NET CORE - Unit Tests - CustomWebApplicationFactoryNET CORE - 单元测试 - CustomWebApplicationFactory
【发布时间】:2020-04-09 21:36:18
【问题描述】:

我正在使用 CustomWebApplicationFactory 创建单元测试。我的情况如下: 两个测试类(Test1 和 Test2)。这两个类都使用指向网络核心 API 启动的 CustomWebApplicationFactory。

如果我从 Test1 类运行所有测试,一切正常。如果我从 Test2 类运行所有测试,则相同。 如果我同时运行所有测试,就会出现问题。测试因各种原因而崩溃。 我猜 CustomWebApplicationFactory 在同时运行的两个测试类之间共享一些东西。

CustomWebApplicationFactory 不会启动启动 API 的两个实例。我不确定发生了什么,但似乎两个测试类都共享静态字段或类似的东西。

无论如何要启动两个完全不同的实例吗?或者其他方式来做到这一点?

我的目标是拥有多个测试类,但都指向同一个 API,并同时运行所有测试,而它们之间不会出现错误。

谢谢

【问题讨论】:

  • 你的问题没有任何意义。首先,单元测试不应该使用测试服务器。这将使他们按照定义进行集成测试。如果您打算实际进行集成测试,那么应该没有问题。您实际上并没有处理完整的正在运行的 API。这才是重点。测试服务器将为每个测试用例建立起来,然后拆除。
  • 对不起,他错了。我正在做集成测试,因为我正在尝试测试调用 API 的整个过程并在每个测试方法中获取响应。但问题是,当测试并行运行时,我会遇到很多错误,而且永远不会出现同样的错误。似乎 WebApplicationFactory 并没有建立 2 个完全不同的服务器。

标签: unit-testing asp.net-core testing visual-studio-2019 asp.net-core-3.0


【解决方案1】:

WebApplicationFactory 多次遇到同样的问题。我知道您提到您希望同时运行所有测试,但对我有用的解决方案是仅按顺序运行测试。

您可以将AssemblyInfo.cs 文件添加到您的集成测试项目中,例如:

<ProjectPath>\Properties\AssemblyInfo.cs

里面有这个:

using Xunit;

[assembly: CollectionBehavior(DisableTestParallelization = true)]

这将强制您的测试按顺序运行,并且应该清除您看到的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多