c# - 成功执行所有测试后导致 vstest 挂起的原因
问题描述
我们正在使用 Visual Studio 测试框架和 C# 编写单元测试,最近我们遇到了一个问题,即 vstest.console.exe 在执行所有测试后有时会挂起。所有测试都通过了,但是 vstest.console.exe 只是永远坐在那里等待某事,而不是退出。
这可能与我们最近开始使用第三方库的变化有关。在调试中运行测试时,我们可以看到该库创建的多个线程在所有测试都已经通过后仍然挂起。
为了更好地理解问题,我尝试重现该问题,如下面的测试代码所示。但是,似乎 vstest.console.exe 在完成这样的测试后非常乐意退出。它似乎并不关心仍在运行的任何“野”线程。所以我的问题是:是什么导致 vstest 在执行所有测试后等待或不等待线程?换句话说,我应该如何修改下面的测试以使vstest在完成后挂起?
[TestMethod]
public void FreezeVSTest()
{
var thread = new Thread(
new ThreadStart(
delegate
{
while (true)
{
Thread.Sleep(1);
}
}));
thread.Start();
}
(请注意,我不是在问如何使测试挂起,我知道添加一个 thread.Join() 可以实现这一点。问题是测试通过后 vstest 本身挂起。)
解决方案
推荐阅读
- asp.net-core - 我们如何在asp.net 2.1核心应用程序的启动类中注册IHttpContextAccessor?
- r - 如何在 R 中查找
- python - 更改散点图中的标记大小
- python-asyncio - asyncio 的 call_soon 失败,而 create_task 没有
- javascript - 在 Xamarin.Forms WebView 中执行 Javascript
- c# - WPF C#设置为自动后获取网格高度
- ios - 在 xCode 存档的导出中,如何从命令行禁用目标签名
- vba - 使用书签访问 Word,如果书签留空,如何执行操作
- php - 如何在 div 标签中添加占位符
- http-live-streaming - 如何启动 live555HLSProxy