Ste*_*fen 31 c# exception-handling shouldly
有没有办法用shouldly测试异常消息?
一个例子:
public class MyException: Exception{
}
Run Code Online (Sandbox Code Playgroud)
要测试的方法:
public class ClassUnderTest
{
public void DoSomething()
{
throw new MyException("Message");
}
}
Run Code Online (Sandbox Code Playgroud)
我通常会以这种方式测试它:
[TestMethod]
public void Test()
{
try
{
new ClassUnderTest().DoSomething();
Assert.Fail("Exception not thrown");
} catch(MyException me)
{
Assert.AreEqual("Message", me.Message);
}catch(Exception e)
Assert.Fail("Wrong exception thrown");
}
}
Run Code Online (Sandbox Code Playgroud)
我应该现在可以测试是否抛出异常:
[TestMethod]
public void TestWithShouldly()
{
Should.ThrowException<MyException>(() => new ClassUnderTest().DoSomething());
}
Run Code Online (Sandbox Code Playgroud)
但是我如何测试异常的消息呢?
Col*_*kay 48
更新:从现在的V3开始Should.Throw<>()
该Should.ThrowException()方法返回异常,因此您可以继续测试是否有其他事情.
例如:
Should.ThrowException<MyException>(() => new ClassUnderTest().DoSomething())
.Message.ShouldBe("My Custom Message");
Run Code Online (Sandbox Code Playgroud)
或者,如果您想做的不仅仅是测试消息:
MyException ex = Should.ThrowException<MyException>(() => new ClassUnderTest().DoSomething());
Run Code Online (Sandbox Code Playgroud)
然后你可以做你喜欢的事ex.