2011-04-23 2 views
3

다음 코드에 대한 몇 가지 단위 테스트 범위를 좀하고 싶습니다 :내부 예외가있는 테스트 코드를 어떻게 구성합니까?

public static class ExceptionExtensions { 
    public static IEnumerable<Exception> SelfAndAllInnerExceptions(
     this Exception e) { 
     yield return e; 
     while (e.InnerException != null) { 
     e = e.InnerException; //5 
     yield return e; //6 
     } 
    } 
} 

편집 :이 코드를 테스트하는 두더지를 필요로하지 않았다 나타납니다. 또한 5 번과 6 번 줄의 버그가있었습니다.

+2

두더지가를 테스트하는 이유는 당신이 필요로하는 것? 이 기능은 기존의 단위 테스트 기술로 테스트 할 수 있습니다. –

답변

3

이것은 내가 가진 것입니다 (Afterall는 두더지를 필요로하지 않았다) :

[TestFixture] 
public class GivenException 
{ 
    Exception _innerException, _outerException; 

    [SetUp] 
    public void Setup() 
    { 
     _innerException = new Exception("inner"); 
     _outerException = new Exception("outer", _innerException); 
    } 

    [Test] 
    public void WhenNoInnerExceptions() 
    { 
     Assert.That(_innerException.SelfAndAllInnerExceptions().Count(), Is.EqualTo(1)); 
    } 

    [Test] 
    public void WhenOneInnerException() 
    { 
     Assert.That(_outerException.SelfAndAllInnerExceptions().Count(), Is.EqualTo(2)); 
    } 

    [Test] 
    public void WhenOneInnerException_CheckComposition() 
    { 
     var exceptions = _outerException.SelfAndAllInnerExceptions().ToList(); 
     Assert.That(exceptions[0].InnerException.Message, Is.EqualTo(exceptions[1].Message)); 
    } 
} 
관련 문제