Gro*_*fit 13 .net mstest exception
我通常使用Nunit,但在我目前的项目中,我使用的是MSTest.现在我有一个测试,它期望一个异常,但仍然失败,我不知道为什么.
这是我用来复制问题的一个简单示例:
[TestMethod, ExpectedException(typeof(ErrorResponseException))]
public void should_throw_exception()
{
throw new ErrorResponseException();
}
Run Code Online (Sandbox Code Playgroud)
ErrorResponseException是一个只从Exception继承的类,也就是说,任何人都知道为什么会失败,我希望它能通过.
Tru*_*ill 14
在NUnit中,我会避免使用ExpectedException并使用Assert.Throws(Exception Asserts).它为您提供更精细的控制.否则,如果测试方法的任何部分抛出该异常,则测试将通过.
在MSTest中,您可以使用old-school结构获得相同级别的控制:
try
{
// code that you expect to throw goes here
Assert.Fail("Expected MyException");
}
catch (MyException ex)
{
// optionally assert on the message - this can make tests fragile though
}
Run Code Online (Sandbox Code Playgroud)
有了这个,就不需要ExpectedException属性了.
(这个概念来自David Astels的"测试驱动开发:实用指南"一书.)