2016-11-11 5 views
6

shouldlyで例外メッセージをテストする方法はありますか?Shouldlyの例外メッセージのテスト

例:

public class MyException: Exception{ 
} 

テストするための方法:

public class ClassUnderTest 
{ 
    public void DoSomething() 
    { 
     throw new MyException("Message"); 
    } 
} 

私は通常、このような方法でこれをテストします:shouldlyで

[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()); 
} 

しかし、例外のメッセージをテストするにはどうすればよいですか?

答えて

13

Should.ThrowException()メソッドは例外を返すので、他のものがあるかどうかをテストし続けることができます。例えば

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

それとも、あなただけのメッセージをテストする以上のことを行いたい場合:

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

あなたは、あなたがexで好きなものを行うことができます。

+0

とてもシンプルです。それを自分で分かっているはずです。ありがとうございます – Steffen

+1

どうやら、最新バージョンでは 'Throw ' – Noctis

関連する問題