2013-11-23 2 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 утверждает, что код события handlet сам не тестируется («Сбрось e.Exception» отмечен красным цветом).

Могу ли я попытаться позвонить непосредственно методу обработчика событий? Как создать экземпляр ValidationEventArgs?

ответ

0

В тесте есть несколько проблем. Для

[ExpectedException(typeof(XmlException))] 

Использование XmlSchemaException

[ExpectedException(typeof(XmlSchemaException))] 

В вашем имени тест предоставить именно то, что вы ожидали. Например,

public void InvalidXmlSchema_EventHandlerExecutes_ThrowsXmlSchemaException() 

Вам также не нужно использовать {{catch} {} блоки. Правильный тип исключения будет распространяться и обрабатываться ExpectedException Attr.

Имейте в виду, что, поскольку вы являетесь файловой системой для чтения неправильногоXSDFile.xsd, это не модульный тест. Это интеграционный тест. Тест будет генерировать исключение XmlSchemaException. Ниже приведен тест на недопустимый XSD.

[TestMethod] 
    [ExpectedException(typeof(XmlSchemaException))] 
    public void InvalidXmlSchema_EventHandlerExecutes_ThrowsXmlSchemaException() { 
     string xSDFilePath = @"XML Test Files\wrongXSDFile.xsd"; 
     XmlSchema.Read(new StreamReader(xSDFilePath), XMLValidationEventHandler); 
    } 

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

Я сейчас проверяю все сообщения, которые забыл отметить как ответ. Извините за задержку – Kaikus

Смежные вопросы