【问题标题】:Visual Studio Debugging Issue with Resharper/NunitResharper/Nunit 的 Visual Studio 调试问题
【发布时间】:2012-06-01 14:20:41
【问题描述】:

我在 Visual Studio 中遇到了一个非常令人沮丧的问题。我正在使用 Resharper,并在 Nunit 中编写测试。

如果我设置了一个断点,它确实会被命中,但是 Step In/Over 和 Continue 不起作用,并且测试永远不会完成。即使我设置了两个破发点,继续也不会打到第二个。如果我在没有断点的情况下调试测试,它会很好地完成。

此外,当我尝试通过设置断点来调试测试时,我经常间歇性地无法评估变量的内容,而是看到以下消息:

Function evaluation disabled because a previous function evaluation timed out. You must continue execution to reenable function evaluation.

我正在使用 Visual Studio 2010。

如果您对要查看的内容有任何想法,请告诉我...我已经搜索了网络,但没有任何运气。

如果需要,很乐意提供更多信息。

编辑 - 方法示例

测试:

[Test]
public void OneRowAddedToSourceData() {
    //Factory just returns System.Data.DataTable with correct columns.
    var sourceData = new DataTableContainerFactory().GetTargetTableContainer(DataTypeNames.EventSharedEnd);

    //GetRow just returns a populated row.
    var row = GetRow(sourceData, 123456, 123,60, 31);

    sourceData.DataTable.Rows.Add(row);
    Assert.AreEqual(1, sourceData.DataTable.Rows.Count);
}

当我在 Assert 语句上设置断点并尝试评估数据表时,我遇到了这个问题。

更新 2! 因此,我已将这个问题缩小到 Resharper 调试。我将测试类更改为 MSTest 而不是 NUnit,但在使用 Resharper 进行调试时仍然遇到上述两个问题。但是,当我使用内置的 VS MSTest 测试运行器运行测试时,所有问题都消失了!

现在我更喜欢使用 NUnit 和 Resharper,所以如果有人能指出一个允许 Resharper 正确调试的设置,我会非常高兴!

【问题讨论】:

  • 我已经看到你在说什么了。它与 Resharper/Nunit 无关。当您尝试评估这些变量时会发生这种情况。当我尝试扩展 List<> 或类似的东西 (Dictionary<,>) 时,我会看到它。如果您可以避免导致该消息的评估,则可以继续调试。现在,我只知道当我收到该错误消息时,我会停止调试并重新启动,然后尽量不要评估导致问题的变量。很想知道如何防止这种情况发生。
  • 感谢 Joel,这在某些情况下可以解决,但我经常尝试准确评估这些变量。非常令人沮丧!我只是希望这里有人可以提供帮助!
  • 您正在评估的函数是否可能连续循环?你能提供一个简单的例子来说明你在什么类型的测试中看到这个吗?
  • 我不认为评估会间歇性地起作用。我在上面添加了一个导致问题的示例。

标签: visual-studio-2010 debugging nunit resharper


【解决方案1】:

我有一个可能的解决方案,尽管有一个警告。进行了一些搜索并遇到了this blog item。它建议从Tools->Options->Debugging->General 关闭Enable property evaluation and other implicit function calls。我将其关闭,现在我可以查看以前导致此问题的项目。

需要注意的是,您习惯于看到自动评估的所有属性现在都不会显示。相反,它声明Implicit function evaluation is turned off by user. 你需要做的就是点击属性上的刷新按钮,你可以看到值,但我还没有决定这是否是我愿意做出的权衡。

【讨论】:

  • 试过这个,但遗憾的是当我点击刷新按钮时,我仍然收到错误。
  • 我猜我使用简单列表的测试是原因。对更新的评估要少得多。快速提问:您是否正在为 .Net 4.0 进行编译?我没有在 .Net 4.0 中重现我的问题(主要在 .Net 3.5 中工作)。怀疑与它有关(至少在我这边)
  • 我在单一类型的对象上遇到了这个问题。它是一个 Nhybernate 实体。其他实体不会出现此问题。
【解决方案2】:

我找到了解决这个问题的方法!

勾选DEBUG->OPTIONS AND SETTINGS->GENERAL->ENABLE PROPERTY EVALUATION AND OTHER IMPLICIT FUNCTION CALLS,取消勾选Call string-conversion function on objects in variable windows

这对我有用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 2020-02-04
    相关资源
    最近更新 更多