如何使用"正确"的callstack创建自定义MSTest Assert方法

hca*_*ber 8 .net unit-testing assert mstest

我正在编写用于测试单元测试值的扩展方法.一个天真的例子是:

public static void ShouldBeTrue(this bool value)
{
    if(!value)
    {
        throw new AssertFailedException("Expected true");
    }
}
Run Code Online (Sandbox Code Playgroud)

并在测试中使用它:

someBool.ShouldBeTrue();
Run Code Online (Sandbox Code Playgroud)

一切正常,除了抛出异常的行将是我在"测试结果"窗口中双击失败的测试时最终结束的行,并且在"测试结果详细信息"中,抛出行显示在错误堆栈跟踪中.

有没有办法围绕这个,所以"someBool.ShouldBeTrue();":

  1. 双击"测试结果"窗口中的失败测试的行是打开的吗?
  2. 堆栈跟踪中唯一的一行?

Rob*_*non 1

我想我找到了答案。您需要做的就是将自定义断言类/方法放入单独的程序集中。如果您愿意,您可以将其作为同一解决方案中的单独项目。