2013-11-23 5 views
0

이벤트 핸들러의 코드를 테스트하려면 어떻게해야합니까?유닛이 이벤트 핸들러의 코드를 테스트합니다.

나는이

[TestMethod] 
    [ExpectedException(typeof(XmlException))] 
    public void TheXMLValidationEventHandlerWorksOK() 
    { 
     string xSDFilePath = @"XML Test Files\wrongXSDFile.xsd"; 
     try 
     { 
      XmlSchema xmlSchema = XmlSchema.Read(new StreamReader(xSDFilePath), XMLValidationEventHandler); 
     } 
     catch (System.Xml.XmlException e) 
     { 
      Assert.IsNotNull(e); 
      throw e; 
     } 
    } 

    private void XMLValidationEventHandler(object sender, ValidationEventArgs e) 
    { 
     throw e.Exception; 
    } 

해야하지만 NCover 이벤트의 코드 ('thow e.Exception'이 빨간색으로 표시됩니다) 자체는 테스트되지 않습니다 handlet 상태.

직접 이벤트 처리기 메서드를 호출해야 할 수도 있습니까? ValidationEventArgs의 인스턴스를 어떻게 만듭니 까?

답변

0

테스트에 몇 가지 문제점이 있습니다. 테스트 이름으로

[ExpectedException(typeof(XmlException))] 

사용 XmlSchemaException

[ExpectedException(typeof(XmlSchemaException))] 

를 들어 정확하게 당신이 기대 것을 제공합니다. 예 :

public void InvalidXmlSchema_EventHandlerExecutes_ThrowsXmlSchemaException() 

try {} catch {} 블록도 필요하지 않습니다. 올바른 예외 유형은 ExpectedException Attr에 의해 전파되고 처리됩니다.

잘못된 XSDFile.xsd를 읽는 파일 시스템이므로 단위 테스트가 아닙니다. 이것은 통합 테스트입니다. 이 테스트에서는 XmlSchemaException이 발생합니다. 아래는 잘못된 XSD에 대한 테스트입니다.

+0

지금 모든 게시물을 확인하고 있습니다. 답변으로 표시하는 것을 잊어 버렸습니다. 지연 돼서 죄송합니다 – Kaikus