VS 2008中的调试单元测试用例

时间:2009-07-07 08:21:12

标签: visual-studio unit-testing breakpoints

我正在尝试在Visual Studio 2008中调试我的一些单元测试,并注意到断点似乎没有停止执行。

我认为它就像设置断点然后在当前上下文中执行“测试|调试|测试”一样简单......但是这实际上并没有真正达到我设置的断点。

我做错了什么还是刚刚坏了?

谢谢, 布兰登

5 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,直到我首先手动连接到aspnet_wp.exe进程,然后单击Debug Tests按钮。然后我的断点终于被击中了。

答案 1 :(得分:1)

在我的情况下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();

   } 
}

答案 2 :(得分:0)

检查以下内容:

  • 测试是否标有[TestClass][TestMethod]
  • 您是否正在运行调试或发布模式构建? (除非确实如此,否则没有太大的区别)调试更好。
  • 您是否在进行优化或不进行优化的情况下进行编译?没有更好
  • 尝试在解决方案中运行所有测试以检查是否达到了断点
  • 最后,也许你有错误,这就是为什么你没有点击代码?

答案 3 :(得分:0)

如果您使用nUnit,则必须执行以下操作

使用您要测试的DLL启动Nunit。 然后在Visual Studio中转到 工具 - >附加到流程

选择您的nunit进程并单击“Attach”,然后它将在所有断点处暂停

玩得开心: - )

答案 4 :(得分:0)

VS2010,VS2008和VS2005中MSTEST的官方Microsoft workaround/kludge/zomg-I-can't-believe-they-can't-be-arsed-to-provide-this-after-4-years是将System.Diagnostics.Debugger.Break()添加到您要开始调试的单元测试中。这适用于所有带有单元测试项目引用的调试符号的项目。

.NET运行时将提示您转储到调试模式(或关闭执行单元测试程序,或忽略调试行),并且(有时)允许您使用启动单元测试的visual studio实例来执行所以。您始终可以从新的VS实例进行调试。一旦你点击System.Diagnostics.Debugger.Break()行,所有其他断点将被激活并命中(假设它们在执行堆栈中)。