如何打破UnitTesting.Assert.AreEqual?

MTR*_*MTR 3 c# unit-testing visual-studio-2010

VS UnitTest项目中断言的标准行为是告诉我测试在特定行上失败了.

然而有时候,如果我可以在这样的断言失败时打破它会很方便.因为只在该行上设置断点也会导致测试用例失败.如果我能断言断言失败,我可以立即看到哪个测试用例失败了.

当断言失败时,如何暂时告诉VS中断?

例如,我在单元测试中以下列方式有许多循环,并想知道哪个迭代失败:

foreach(var testcase in testcases)
{
    Assert.AreEqual(testcase.ExpectedOutputData, FuncionUnderTest(testcase.InputData));
}
Run Code Online (Sandbox Code Playgroud)

Fly*_*179 5

只需使用一个条件断点,并给它断言检查的逻辑否定.

就我个人而言,我认为断点严重未被充分利用,只不过是"在这一点上突破"工具 - 它们非常通用,并且可以轻松地用于代替Console.WriteLine显示调试输出而无需实际修改代码,以及仅打破断言会失败.

如果过度使用这种方式,它们往往会导致一点性能损失,但这很少是运行单元测试的问题.

  • 这可能只是一个偏好问题(或者我错过了一些非常有用的东西),但我从未使用过它.我一直觉得断点的重点是你不需要为了调试而修改你的实际来源. (2认同)