使用Shouldly测试异常消息

本文关键字:消息 异常 测试 Shouldly 使用 | 更新日期: 2023-09-27 18:17:20

是否有方法使用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");
    }
}

使用shouldly,我现在可以测试是否抛出异常:

[TestMethod]
public void TestWithShouldly()
{
    Should.ThrowException<MyException>(() => new ClassUnderTest().DoSomething());
}

但是我如何测试异常消息呢?

使用Shouldly测试异常消息

Should.Throw()方法返回异常,因此您可以继续测试其他事情。

例如:

Should.Throw<MyException>(() => new ClassUnderTest().DoSomething())
    .Message.ShouldBe("My Custom Message");

或者,如果您想做的不仅仅是测试消息:

MyException ex = Should.Throw<MyException>(() => new ClassUnderTest().DoSomething());

你可以对ex做任何你喜欢的事情。

注意:应该V2使用Should.ThrowException<>()