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