Visual Studio - 突然无法调试测试

时间:2013-08-02 18:43:45

标签: visual-studio visual-studio-2012 visual-studio-2017 visual-studio-debugging vs-unit-testing-framework

我不确定我做了什么,但突然之间,我的 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

我确实没有这样做。

它正在列表中的每个测试中执行此操作。

然而,我可以运行测试没有问题,他们通过...但我无法调试测试。

我可以做些什么?我没有主动进入任何设置并改变任何东西,可能是某个地方的流浪点击,但在哪里?

31 个答案:

答案 0 :(得分:38)

我今天遇到了这个。我尝试关闭解决方案,但它没有工作。我的错误是我将解决方案设置为Release Mode而不是Debug Mode。我将它设置为Debug然后按预期工作。

我使用VS 2015专业版。

答案 1 :(得分:21)

将测试项目从VS 2010升级到VS 2012 Ultimate Update 3后,我获得了相同的输出。使用MSTest命令调试所选测试后,消息显示在“测试输出”窗口中。

我尝试使用Resharper 8 单元测试会话窗口调试测试。结果窗口中的消息是“测试未运行”。

帮助我的解决方案是修改测试项目设置,以按照此链接的指示启用本机代码调试:Uncaught exception thrown by method called through reflection

如果链接不起作用:

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

答案 2 :(得分:13)

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

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

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

答案 3 :(得分:4)

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

步骤。

1.关闭您的visual studio实例

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

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

4.重新启动应用程序。

答案 4 :(得分:2)

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

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

答案 5 :(得分:2)

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

  • 右键单击解决方案,从解决方案资源管理器
  • 转到设置启动项目..
  • 点击配置属性,确保测试项目已检查构建

答案 6 :(得分:1)

答案 7 :(得分:1)

当我使用Visual Studio 2012时,由于某些原因,如果我使用快捷键ctrl R + T,它将达到断点。但如果我点击"全部运行"或者"运行选定的测试"在测试资源管理器上,它不会。 Visual Studio 2013可以很好地兼顾两种方式。

答案 8 :(得分:1)

对我来说,将MSTest.TestAdapterMSTest.TestFramework的Nuget包更新到最新版本可以解决问题。

答案 9 :(得分:1)

异步测试 - 在我的场景中的症状是相似的,因为我的测试没有执行,我的断点没有被击中。 Visual Studio中的测试资源管理器可以看到测试,但我无法调试它。即使可以在测试资源管理器中看到它,也无法找到它的运行方式。

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

这样做:

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

不是这个:

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

答案 10 :(得分:0)

对我来说,以下工作有效:

  1. 关闭解决方案
  2. 关闭Visual Studio
  3. 删除内容 “ C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \临时ASP.NET 文件\“
  4. 删除内容 “ C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET 文件\“
  5. 打开Visual Studio
  6. 开放式解决方案

答案 11 :(得分:0)

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

答案 12 :(得分:0)

就我而言,我的符号未加载。

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

enter image description here

答案 13 :(得分:0)

没有一个建议的解决方案对我有用。对我有用的是将单元测试项目和所有从属项目的平台目标更改为任何CPU ,而不是 x64 ,这是一种解决方法,不是真正的解决方法!

编辑

单元测试项目的目标平台可以从测试设置更改,而不是从项目属性更改。有关更多信息,请参见this answer

答案 14 :(得分:0)

我刚刚遇到类似的问题,在调试时没有有意义的消息,NUnits TimeoutAttribute导致测试被取消。

从测试中删除该属性即可解决此问题。

答案 15 :(得分:0)

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

答案 16 :(得分:0)

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

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

希望这个简单的解决方案也对您有所帮助。 最好的问候

答案 17 :(得分:0)

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

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

答案 18 :(得分:0)

在我的情况下,这是因为我使用非静态方法作为数据测试方法的动态数据源。

答案 19 :(得分:0)

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

enter image description here

答案 20 :(得分:0)

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

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

答案 21 :(得分:0)

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

Unit Test Debugging Fix

答案 22 :(得分:0)

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

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

答案 23 :(得分:0)

从Visual Studio 2017(15.8)开始,激活实时单元测试功能时可能会发生这种情况。输出中没有明确的消息;它只是启动和停止而无需调试。解决方案是停止实时测试,以便您可以正常调试测试。

答案 24 :(得分:0)

app.config问题参考可能会在调试测试项目时无意间导致调试器无法连接并且断点不会出现。该文件可能已通过软件包更新或已过期。

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

答案 25 :(得分:0)

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

答案 26 :(得分:0)

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

enter image description here

答案 27 :(得分:0)

对我来说,问题是在升级到2017 v15.5.7后,我的解决方案的属性以某种方式发生了变化。这使得我可以在调试模式下运行测试一次,但不会再次,除非我重新启动VS,然后它会再次运行一次。一旦我把它放回去,它再次起作用。这个设置对我来说应该是,解决方案>共同属性>启动项目>多个启动项目。不知怎的,它被设置为“单一启动项目”。

答案 28 :(得分:0)

点击“运行测试”不会触发制动点。

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

右键单击>调试测试

“测试”标签>调试>所有测试

答案 29 :(得分:0)

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

答案 30 :(得分:-1)

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

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

操作:

  • 从Microsoft下载VS2012 Update Pack 4
  • 将UAC(按Windows键,输入UAC)设置为默认
  • 卸载Update pack 4
  • (强制)重启
  • 再次将UAC设置为默认(不知怎的,它已重置为无)
  • 安装更新包4

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