9

我在 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 正确调试的设置,我会非常高兴!

4

2 回答 2

5

我有一个可能的解决方案,尽管有一个警告。做了一些搜索并浏览了这个博客项目。它建议Enable property evaluation and other implicit function callsTools->Options->Debugging->General. 我把它关掉了,我现在可以进入以前导致这个问题的项目。

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

于 2012-06-04T15:14:17.437 回答
0

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

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

这对我有用!

于 2014-01-14T13:37:27.960 回答