2009-09-06 6 views

답변

14

몇 가지 방법이 있습니다. 나는 Assert.Throws를 사용합니다.

var exception = Assert.Throws<YourTypeOfException>(()=> Action goes here); 

var exception = Assert 
       .Throws<ArgumentNullException>(()=> new ChimpPuncher(null)); 

원하는 경우 예를 들어 예외 개체를 쿼리 할 수 ​​있습니다.

Assert.That(exception.Message, Text.Contains("paramname"); 
0

왜 조롱 된 메서드 호출을 try/catch 블록으로 묶고 throw되는 특정 예외를 잡을 수 없습니까?

2

가장 좋은 방법은 테스트 방법 위에 [ExpectedException(typeof(ApplicationException))]입니다.

+0

이 접근법의 문제점은이 유형의 Exception이 ExpectedException 특성으로 장식 된 메서드의 _any_ 부분에 의해 throw되면 테스트가 통과한다는 것입니다. Assert.Throws <> 메카니즘을 사용하면 표면 영역이 줄어 듭니다. 예외가 실행되는 메소드 내에서 예외를 던져야하기 때문입니다. –

관련 문제