有没有办法用shouldly来测试异常消息?
一个例子:
public class MyException: Exception{
}
要测试的方法:
public class ClassUnderTest
{
public void DoSomething()
{
throw new MyException("Message");
}
}
我通常会以这种方式测试:
[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");
}
}
我现在可以测试是否抛出异常:
[TestMethod]
public void TestWithShouldly()
{
Should.ThrowException<MyException>(() => new ClassUnderTest().DoSomething());
}
但是如何测试异常消息呢?
答案 0 :(得分:37)
更新:从现在的V3开始Should.Throw<>()
Should.ThrowException()
方法返回异常,因此您可以继续测试其他内容。
例如:
Should.ThrowException<MyException>(() => new ClassUnderTest().DoSomething())
.Message.ShouldBe("My Custom Message");
或者,如果您想做的不仅仅是测试消息:
MyException ex = Should.ThrowException<MyException>(() => new ClassUnderTest().DoSomething());
然后,您可以使用ex
执行您喜欢的操作。