我刚开始使用 MVCContrib,我真的很喜欢它添加到各种测试场景中的语法糖。例如,我刚刚写了这个断言:
"~/".Route().ShouldMapTo<SpotController>(c => c.List());
这个棒极了!嗯,几乎...
而不是,如我所愿,看到测试失败的实际原因(我在我的 MVC 应用程序中没有更改任何内容,因此应该路由HomeController.Index()
到 这是我在调试时发现的,因为 MVCContrib 中的测试扩展方法正确(?)抛出了AssertionException
.
我假设这是 NUnit 类型的失败异常,而 MsTest 版本是AssertFailedException
. 由于 NUnit 版本(显然)没有从 MsTest 版本继承,因此 VS 中的测试运行器不会捕获异常并给我一个好消息。
有什么方法可以让 MsTest 以与 AssertFailedExceptions 类似的方式处理 AssertionExceptions,而不必重新编写 MVCContrib.TestHelpers 的一半?
我确实在本地工作副本中有源代码,所以我可以进去并在那里重新编写测试方法以抛出 MsTest 异常,但这似乎过于矫枉过正......
更新:
这个问题也出现在大多数模拟框架中,所以现在我不仅想用AssertionException
NUnit 做这个,还想用VerificationException
Moq 做这个,可能还有其他......这是不可能的吗?