62

我不确定我做了什么,但突然之间,我的Visual Studio 2012不会调试任何测试。

如果我从测试资源管理器中选择一个测试并告诉它运行,它只会在测试输出窗口中输出:

> ------ Discover test started ------
> ========== Discover test finished: 29 found (0:00:01.3371755) ==========
> ------ Run test started ------ Process with an Id of -1 is not running.
> ========== Run test finished: 0 run (0:00:01.4711861) ==========

这是什么意思?!这样做几次后,错误变为:

The Operation was Cancelled

我肯定没有这样做。

它对列表中的每个测试都执行此操作。

但是,我可以毫无问题地运行测试,并且它们通过了......但我无法调试测试。

我可能做了什么?我没有主动进入任何设置并更改任何内容,也许是某个地方的流浪点击,但在哪里?

4

33 回答 33

58

我今天遇到了这个。我尝试关闭解决方案,但没有奏效。我的错误是我将解决方案设置为发布模式而不是调试模式。我将它设置为调试,然后它按预期工作。

我正在使用 VS 2015 专业版。

于 2017-10-24T05:44:32.227 回答
27

将测试项目从 VS 2010 升级到 VS 2012 Ultimate Update 3 后,我得到了相同的输出。在使用 MSTest 命令Debug Selected Tests后,该消息显示在 Test Output 窗口中。

我尝试使用 Resharper 8 Unit Test Session窗口调试测试。结果窗口中的消息是“测试未运行”。

帮助我的解决方案是修改测试项目设置以启用本机代码调试,如下所示:通过反射调用的方法引发的未捕获异常

如果链接不起作用:

  1. 转到项目右键单击并选择属性。
  2. 选择左侧的“调试”选项卡。
  3. 转到底部的“启用调试器”
  4. 选中“启用本机代码调试”(或“启用非托管代码调试”,取决于版本)复选框

感谢 GalDude33 发布解决方案。

于 2013-10-03T15:42:21.313 回答
17

Visual Studio 2012经常遇到同样的问题。

解决方案:关闭当前解决方案并重新打开它

在我的情况下,没有必要关闭和重新打开 VS。

于 2014-07-09T22:49:57.727 回答
11

异步测试- 我的场景中的症状相似,因为我的测试没有执行并且我的断点没有被命中。Visual Studio 中的测试资源管理器可以看到测试,但我无法调试它。运行它就像在测试资源管理器中可以看到它一样找不到它。

如果它对其他人有帮助,我的问题就像必须将测试方法的签名从“async void ”更改为“async Task ”一样简单。

做这个:

[TestMethod]
public async Task CorrectlyFailingTest()
{
  await SystemUnderTest.FailAsync();
}

不是这个:

[TestMethod]
public async void CorrectlyFailingTest()
{
  await SystemUnderTest.FailAsync();
}
于 2018-05-26T23:18:49.583 回答
7

我无法附加到我的调试器,因为它正在寻找测试设置文件。
如果这是您的问题,请转到测试->测试设置->取消选中 Local.testsettings 选项

单元测试调试修复

于 2018-11-01T20:15:09.867 回答
5

请按照以下步骤操作。它对我有用

脚步。

1.关闭你的视觉工作室实例

2.清理你的临时文件和预取文件。

3.删除项目bin文件夹中的文件。

4.重新启动应用程序。

于 2017-08-30T10:11:32.993 回答
4

确保您的测试项目是要构建的项目的一部分。

  • 解决方案资源管理器中右键单击您的解决方案
  • 转到设置启动项目..
  • 单击配置属性并确保检查您的测试项目以进行构建
于 2018-05-29T10:39:07.633 回答
4

对我来说,将Nuget 包更新到最新版本解决了这个问题MSTest.TestAdapterMSTest.TestFramework

于 2017-08-24T08:45:32.737 回答
3

就我而言,是launchSettings.json文件导致调试器无法命中断点。不确定为什么该文件存在于单元测试类型的项目中(可能是一些不需要的剩余部分),但是,xunit 似乎并没有忽略它。我只是删除了该文件,并且能够再次调试单元测试。

环境:Microsoft Visual Studio Enterprise 2019 预览版(版本 16.8.0 预览版 3.1)

于 2020-09-24T22:22:49.320 回答
2

我在VS2015中遇到了类似的问题。在我的情况下,只有一个单元测试无法调试。调试器会初始化一个测试,但不会调试测试本身,很好地退出。问题在于 Resharper 在没有为项目启用 NuGet 包的情况下导入 Newtonsoft.Json 库。(我使用 Alt+Enter 自动导入库)

解决方案是为测试项目安装 Newtonsoft.Json NuGet 包。

于 2016-04-21T07:35:30.093 回答
2

从 Visual Studio 2017 (15.8) 开始,当 Live Unit Testing 功能处于活动状态时,可能会发生这种情况。输出中没有明确的信息;它只是在没有调试的情况下启动和停止。解决方案是停止实时测试,以便您可以正常调试测试。

于 2018-10-17T19:31:53.053 回答
2

就我而言,我的符号没有加载。

我必须转到工具 -> 选项 -> 调试 -> 并选择“加载所有模块,除非排除”才能命中断点。

在此处输入图像描述

于 2019-02-01T19:52:04.803 回答
1

看看下面的链接,有一个修复它的更新。视觉工作室 2012 更新 3。

http://social.msdn.microsoft.com/Forums/vstudio/en-US/e96f53c7-dc8c-4274-8756-eb745de701e8/visual-studio-2012-update-3-cant-debug-unit-test

于 2013-08-14T12:53:07.727 回答
1

当我使用 Visual Studio 2012 时,由于某些原因,如果我使用快捷键 ctrl R+T,它会遇到断点。但是,如果我在测试资源管理器上单击“全部运行”或“运行选定的测试”,则不会。不过,Visual Studio 2013 两种方式都可以正常工作。

于 2016-08-18T14:43:53.833 回答
1

这可能不是专门针对您的问题的解决方案,但我也无法调试我编写的测试。原来解决方案非常简单:

将方法从 更改privatepublic。我不知道为什么不能在私有方法中进行调试,但它可能与[Test]属性的实现有关。希望这对将来遇到类似问题的人有所帮助!

于 2018-11-08T11:40:54.890 回答
1

建议的解决方案都不适合我。对我有用的是将单元测试项目和所有依赖项目的平台目标更改为Any CPU而不是x64,这是某种解决方法而不是真正的修复!

编辑

单元测试项目的目标平台可以通过测试设置而不是项目属性进行更改。有关更多信息,请参阅此答案

于 2019-03-05T13:13:33.350 回答
1

就像你们一样,我无法在 Visual Studio 2019 16.6.2 中调试或运行我的 MSBuild 测试项目的单元测试。我想要进行单元测试的代码位于基于 .Net 4.6.2 的类库中。测试资源管理器始终使用下方的蓝色信息图标显示“测试未运行”。

所以我只是尝试从我想要测试的方法的代码文件中创建一个新的单元测试 => 并且它有效!我经历的确切步骤:在 C# 文件中,转到方法,右键单击它并选择“创建单元测试”并让对话框创建一个新项目。从我的原始文件中添加测试代码后一切正常,我能够调试和运行我的测试方法!

希望这个简单的解决方案也能对你们中的一些人有所帮助。此致

于 2020-06-24T15:19:35.033 回答
1

点击“运行测试”不会触发刹车点。

调试代码并在测试中的断点处停止:

右键单击 > 调试测试

或者

“测试”选项卡 > 调试 > 所有测试

于 2018-01-12T01:50:13.323 回答
1

我只是简单地添加了xunit.runner.visualstudio(当时最新的稳定版本是 2.4.2),这就成功了。

于 2021-07-13T21:02:55.800 回答
0

我在Visual Studio 2019中遇到了同样的问题。

对我来说,使用Visual Studio Installer的修复命令工作。

在此处输入图像描述

于 2021-11-07T09:55:28.663 回答
0

如果您在旧版 Visual Studio 中创建了项目并且现在使用的是 VS 2019,则必须安装 Microsoft.VisualStudio.TestPlatform 库并更新其他库。

于 2020-05-14T12:20:29.353 回答
0

对我来说,问题是我的配置文件(app.config)没有调试转换文件(app.Debug.config),一旦我添加它就开始工作/调试。

于 2016-05-17T17:12:38.160 回答
0

对我来说,以下工作:

  1. 关闭解决方案
  2. 关闭 Visual Studio
  3. 删除“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\”的内容
  4. 删除“C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\”的内容
  5. 打开 Visual Studio
  6. 开放式解决方案
于 2018-11-12T09:24:06.403 回答
0

就我而言,这是一个有参考的测试项目Microsoft.NET.Sdk.Function

    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.0.1" />

一旦它被删除,调试器就会在断点设置处停止。

于 2021-12-14T01:06:35.270 回答
0

检查测试项目和主项目是否使用相同的框架版本。

在此处输入图像描述

于 2018-06-28T13:14:48.663 回答
0

就我而言,如果存在构建警告,则无法命中断点。我可以通过切换带有警告的代码行来验证这一点。这是一个长度为 66000 的未使用字符串。(警告 CS0219 已分配变量“XXXXXXX”,但从未使用其值)

我猜编译器删除了这一行,所以符号映射失败了?

于 2018-10-21T07:10:16.020 回答
0

我刚刚遇到了一个类似的问题,其中 NUnits TimeoutAttribute导致在调试时取消测试而没有有意义的消息。

从测试中删除属性解决了这个问题。

于 2020-03-09T14:12:48.797 回答
0

For me the problem was that after upgrading to 2017 v15.5.7 my solution's properties got changed somehow. Which made it where I could run the test once in debug mode, but not again, unless I restarted VS, then it would work again, once. Once I set it back it worked again. The setting was, and should be, for me, Solution > Common Properties > Startup Project > Multiple startup projects. Somehow it got set to "Single startup project".

于 2018-02-28T21:34:06.667 回答
0

对我来说,我去了测试探索->设置-> AnyCPUProjects的处理器架构并将其更改为X64,它对我有用。

在此处输入图像描述

于 2020-12-29T00:21:00.137 回答
0

就我而言,这是因为我使用非静态方法作为数据测试方法的动态数据源。

于 2020-12-10T17:25:30.770 回答
0

app.config 问题引用可能会在调试测试项目时无意中导致调试器不附加和断点不命中。此文件可能已由软件包更新或已过期。

解决方案:我一般从测试项目的app.config中复制然后删除runtime标签下的所有依赖。调试通常在此之后开始工作,但如果找不到程序集,可能需要添加一些引用。

于 2018-10-08T13:45:03.527 回答
0

解决方案:选择“调试单元测试”或“运行单元测试”而不是“调试测试”或“运行测试”。

于 2018-07-29T14:49:23.427 回答
-1

在调查同一问题时看到了这篇文章;这为我解决了这个问题(发布这个以防其他人遇到同样的问题):

系统:Windows 7,Intel i5 上的 64 位

行动:

  • 从 Microsoft 下载 VS2012 更新包 4
  • 将 UAC(按 Windows 键,输入UAC)设置为默认值
  • 卸载更新包 4
  • (强制)重启
  • 再次将 UAC 设置为默认值(不知何故它被重置为无)
  • 安装更新包 4

UAC 的事情是在其他地方提到的,但我不知道这是否是必要的步骤。

于 2014-03-31T12:26:49.307 回答