2017-05-09 21 views
-2

음수 값 뒤에 표시된 오류 메시지를 확인하는 방법입니까? 올바른 예외가 throw되었는지 확인할 수 있지만 내 메서드가 음수가있는 예외를 throw하지 않으면 WriteLine을 오류 출력 스트림으로 throw합니다.C#에서 오류 메시지를 확인하는 방법은 무엇입니까?

public List<int> MyMethod() 
{ 
    ... 
    try 
    { 
     //add elements to list 
    } 
    catch(Exception e) 
    { 
     Error.WriteLine("Element cannot be negative, but other elements are ok"); 
    } 
    ... 
} 

[TestMethod] 
public void TestWithNegatives() 
{ 
    try 
    { 
     List<int> list = MyMethod(); 
     //there is a negative int in list, so there'll be an error message 
    } 
    catch (Exception e) 
    { 
     //Can I check here the error message, if there isn't exception thrown in mymethod? 
    } 
} 
+0

당신이 단위 테스트를 시도? –

+0

"표시"란 무엇을 의미합니까? GUI, 콘솔 응용 프로그램이 있습니까? – tafia

+0

다양한 상황에서 표시 할 콘솔에 일련의 줄을 쓰는 것은 간단하지만 기능적인 방법 일 수 있습니다. 마찬가지로 디버그를 따라갈 때 중단 점을 설정하고 요소를 검사 할 수 있으므로 콘솔의 if 문을 많이 절약 할 수 있습니다. – ToFo

답변

0

이미 예외를 처리했으며 다시 테스트되지 않았으므로 테스트에서 다시 처리 할 수 ​​없습니다.

하지만 메시지가 Console.Error에 기록되는 것을 알고 있기 때문에, 사용자 정의 StringWriter하고 그런 식으로 무엇을 작성되었습니다 확인하려면 Console.Error을 리디렉션하여이를 확인할 수 있습니다

public void TestWithNegatives() 
{ 
    using (StringWriter sw = new StringWriter()) 
    { 
     Console.SetError(sw); 
     List<int> list = MyMethod(); 
     // Check output in "Error": 
     Assert.IsFalse(string.IsNullOrEmpty(sw.ToString())); 
    } 
} 
+0

정말 고마워요! 그것은 내가 필요한 것입니다. – programmo