我正在尝试在Visual Studio 2008中调试我的一些单元测试,但是发现断点似乎没有停止执行。
我有点认为这很简单,只需要设置断点,然后执行“Test | Debug | Tests in current context”...但实际上它从未命中我设置的断点。
我是做错了什么还是这个功能出了问题?
谢谢, Brandon
我正在尝试在Visual Studio 2008中调试我的一些单元测试,但是发现断点似乎没有停止执行。
我有点认为这很简单,只需要设置断点,然后执行“Test | Debug | Tests in current context”...但实际上它从未命中我设置的断点。
我是做错了什么还是这个功能出了问题?
谢谢, Brandon
我曾经遇到过同样的问题,直到我手动附加到aspnet_wp.exe进程并点击“Debug Tests”按钮后,我的断点才最终被触发。
System.Diagnostics.Debugger.Break()
在测试方法中无法停止。[TestClass]
public class ContactListTest
{
#region "Constants"
public const string COVERAGE = "CoverageService";
public const string CompanyList = "CompanyList";
public const string ContactList = "ContactList";
#endregion
[TestMethod]
public void GetContactListTest()
{
System.Diagnostics.Debugger.Break();
var ex = new ServiceFilterExpression(COVERAGE);
ex.Expression = new OpBeginsWith("Type", ContactList);
var result = ex.FetchData();
}
}
微软官方workaround/kludge/zomg-I-can't-believe-they-can't-be-arsed-to-provide-this-after-4-years为MSTEST在VS2010、VS2008和VS2005中的解决方法是,在你想要从中开始调试的单元测试中添加System.Diagnostics.Debugger.Break()
。这适用于所有由单元测试项目引用调试符号的项目。
.NET运行时将提示您转储到调试模式(或关闭执行单元测试程序,或忽略调试行),并(有时)允许您使用启动单元测试的Visual Studio实例来进行调试。您始终可以从新的VS实例进行调试。一旦您触发了那个System.Diagnostics.Debugger.Break()
行,所有其他断点都将处于活动状态并被触发(假设它们在执行堆栈中)。
[TestClass]
和[TestMethod]
?