Visual Studio 2019 测试资源管理器异常(未找到以下 TestContainer - GetTestContainerAsync)

Visual Studio 2019 Test Explorer exception (The following TestContainer was not found - GetTestContainerAsync)

我在 Visual Studio 2019 Professional (16.4.2) 中有一个解决方案,其中包含各种测试可执行文件(Google 测试和 NUnit)。

尝试从测试资源管理器启动测试时,我有时会收到有关未找到特定测试容器的错误消息。奇怪的是,它抱怨的容器属于不同的构建配置。例如,运行ning x64|Debug 中的测试会导致有关缺少 x64|Release 容器的错误。无论如何,它抱怨的测试容器总是在报告的位置。

我已经尝试删除所有输出,重新启动 Visual Studio,重建所有内容(包括明显不必要的测试容器)并重新启动测试 运行,但错误仍然存​​在并阻止任何测试来自运行宁。似乎 Test Explorer 正在缓存先前测试 运行 的某些状态并将其与当前 运行.

混在一起

这是在 x64 调试中尝试 运行 测试时的堆栈跟踪示例。请注意该错误如何与容器的 x64 发布版本相关:

Test Adapter for Google Test: Test discovery starting...
Found 99 tests in executable C:\ProjectTest\Output\x64\Debug\BatchA\TestSuite.BatchA.exe
Test discovery completed, overall duration: 00:00:00.3742589

[30/06/2020 1:44:22.976 PM] ========== Discovery finished: 99 tests found (0:00:01.9392922) ==========
System.InvalidOperationException: The following TestContainer was not found 'C:\ProjectTest\Output\x64\Release\BatchA\TestSuite.BatchA.exe'
   at Microsoft.VisualStudio.TestWindow.Client.TestContainer.TestContainerProvider.<GetTestContainerAsync>d__46.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.TestWindow.Controller.TestContainerConfigurationQueryByTestsBase.<QueryTestContainerConfigurationsAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.TestWindow.Controller.TestContainerConfigurationQueryByTestsBase.<GetContainersToUpdateInternalAsync>d__3.MoveNext()

... Followed by a lot more TestWindow.*MoveNext() stack trace entries similar to the ones above

如果我切换回容器错误中提到的平台和配置,有时它会成功启动测试,但有时它会抱怨其他一些容器(同样,一个来自明显不相关的构建配置)。

现在我已经放弃并回到 2017 年的 运行ning 测试,这似乎暂时有效,但如果它也开始在那里发生,我真的会被卡住。如果可能,我想避免默认我的 Visual Studio 设置,因为我设置了很多东西需要一段时间才能配置。

谢谢。

使用 Visual Studio 2019 测试:

  1. 关闭 Visual Studio.

  2. 打开文件资源管理器并转到包含您的解决方案的文件夹。这里有一个文件夹 .vs\solution name\v16\TestStore 包含编号的文件夹。

  3. 删除编号的文件夹。

注意:一些正在删除的文件在关闭后可能会保持锁定几秒钟Visual Studio,因为所有子进程都需要一段时间才能终止,因此您可能需要重试几次。