WebApplicationFactory<> 应该被释放吗?

MiB*_*ena 5 c# integration-testing xunit.net asp.net-core

我有一个Asp.Net Core 6 Web Api申请。

我按照此处的WebApplicationFactory<Program>建议进行了集成测试。我将它注入到 xUnit 测试类中 。IClassFixture<WebAdminTestApplicationFactory<Program>>

根据文档

如果您的类拥有一个字段或属性,并且其类型实现 IDisposable,则包含类本身也应该实现 IDisposable。实例化 IDisposable 实现并将其存储为实例成员的类也负责其清理。

那么为什么 MSDN 集成测试示例不将WebApplicationFactory其作为字段处理呢?

不应该WebApplicationFactory处理掉吗?因为它确实实现了 IDisposable。

Kir*_*kin 2

在这种情况下,您的测试类不拥有 WebApplicationFactory<Program>:它是由 xUnit 注入的,xUnit 会Dispose为您创建并调用它。

请参阅测试之间的共享上下文:类装置

使用类固定装置时,xUnit.net 将确保在任何测试运行之前创建固定装置实例,并且一旦所有测试完成,它将通过调用 来清理固定装置对象(Dispose如果存在)。