C# 从VS中的多个类运行测试时未调用Dispose
我有许多跨多个类的xUnit测试。许多此类依赖于在每次测试之前调用的setup方法和在每次测试之后调用的clean-up方法 在每个测试类中,我都有一个构造函数,它调用setup方法和dispose方法,如下所示:C# 从VS中的多个类运行测试时未调用Dispose,c#,visual-studio,xunit,xunit.net,C#,Visual Studio,Xunit,Xunit.net,我有许多跨多个类的xUnit测试。许多此类依赖于在每次测试之前调用的setup方法和在每次测试之后调用的clean-up方法 在每个测试类中,我都有一个构造函数,它调用setup方法和dispose方法,如下所示: public override void Dispose() { Cleanup(); } 每个测试类都扩展了一个基类,它扩展了一个继承IDisposable的类 当我在一个单独的测试类中运行测试时,所有测试都正常运行,并且正确调用了dispose方法 当我使用Visual
public override void Dispose()
{
Cleanup();
}
每个测试类都扩展了一个基类,它扩展了一个继承IDisposable
的类
当我在一个单独的测试类中运行测试时,所有测试都正常运行,并且正确调用了dispose方法
当我使用VisualStudio中的测试资源管理器运行解决方案中的所有测试时,很多测试都失败了,因为没有调用clean-up方法。调试测试时,我没有看到调用dispose
我安装了xunit.runner.visualstudio
NuGet包,以便在VisualStudio2019中运行测试。我正在使用XUnit2.4.1
有人知道我一次运行所有测试时为什么不调用dispose吗
它确实创建了一些共享状态,这些状态需要在初始化之前进行初始化
每次测试后都会进行清洁
默认情况下,xUnit并行执行不同类的测试。因为在测试之间使用共享状态,所以需要按顺序执行所有测试
为了按顺序执行测试,将使用共享状态的所有测试分组到一个“测试集合”中
来自文档
何时使用:当您希望创建单个测试上下文并在多个测试类中的测试之间共享它,并在之后将其清理干净时
测试类中的所有测试都已完成
您可以与测试共享一些代码吗?您是否将您的测试类标记为实现IDisposable?@edplunkett这些是xunit测试类,Dispose由测试线束/驱动器调用?我创建了一些精简代码的GIST:感谢帮助安装和清理是否创建了一些共享状态?如果其中一个测试类未能清理,为什么其他测试会失败?非常感谢。我禁用了并行性,现在可以成功地批量运行所有测试。