我在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 Debugging。我将测试类更改为MSTest而不是NUnit,但在使用Resharper进行调试时仍然遇到上述问题。但是,当我使用内置的VS MSTest测试运行器运行测试时,所有问题都已消失了!
现在我更喜欢使用NUnit和Resharper,所以如果有人能指出我允许Resharper正确调试的设置,我会很高兴!
答案 0 :(得分:5)
我有一个可能的解决方案,尽管有一个警告。做了一些搜索并跑过this blog item。它建议从Enable property evaluation and other implicit function calls
关闭Tools->Options->Debugging->General
。我把它关了,我现在可以进入之前导致这个问题的项目了。
需要注意的是,您以前看到的所有自动评估的属性现在都没有显示出来。相反,它指出Implicit function evaluation is turned off by user.
您需要做的就是点击属性上的刷新按钮,你可以看到价值,但我还没有决定这是否是我愿意做出的权衡。
答案 1 :(得分:0)
我找到了解决这个问题的方法!
选中 DEBUG->选项和设置 - > GENERAL->启用属性评估和其他隐含功能调用选项,然后取消选中对象中的对象调用字符串转换功能变量窗口
这对我有用!