Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从VS中的多个类运行测试时未调用Dispose_C#_Visual Studio_Xunit_Xunit.net - Fatal编程技术网

C# 从VS中的多个类运行测试时未调用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

我有许多跨多个类的xUnit测试。许多此类依赖于在每次测试之前调用的setup方法和在每次测试之后调用的clean-up方法

在每个测试类中,我都有一个构造函数,它调用setup方法和dispose方法,如下所示:

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:感谢帮助安装和清理是否创建了一些共享状态?如果其中一个测试类未能清理,为什么其他测试会失败?非常感谢。我禁用了并行性,现在可以成功地批量运行所有测试。