2010-07-28 5 views
8

Я реализую генерации генерации слов Word с использованием элементов управления содержимым и OpenXML SDK. Я хотел бы иметь автоматическое тестирование для этого кода (модульные тесты или несколько простых тестов автоматизации пользовательского интерфейса).Автоматическое тестирование OpenXML SDK

Есть ли у кого-нибудь опыт тестирования тестового поколения MS Word? Каковы возможные варианты?

Заранее благодарен!

+0

Почему модульное тестирование OpenXML должно отличаться от стандарта. Вы пытаетесь проверить, может ли документ открыться словом или если он будет выглядеть хорошо? –

+0

Это не так, просто технически сложно. Типичным тестом является Arrange-Act-Assert. Итак, вопрос в том, как мы можем легко сделать последнюю часть - Assert. Возможно, с использованием некоторой автоматизации слова или автоматизации автоматизации пользовательского интерфейса, но я не вижу простого способа сделать это. Таким образом, я получаю тесты, генерирующие отчет и открывающиеся словом, поэтому я вручную проверяю, хорошо ли отчет. Это не «чистый» модульный тест, но лучше, чем запуск полного приложения для создания необходимых отчетов. Также меня интересует тестирование кода, который работает непосредственно с Open XML, все остальные части, которые я разделял и тестировал с помощью обычных модульных тестов. – Andrii

ответ

5

Нет, я не проводил модульное тестирование поколения MS Word, но, как говорит Ingó Vals, он не должен отличаться от других форм модульного тестирования.

1) [Дополнительно - для обеспечения правильного использования SDK для ваших нужд]. Узнайте, как ваше приложение должно управлять SDK. Напишите некоторые тестовые сценарии, которые имитируют предполагаемые функции, и убедитесь, что документы Word, которые они генерируют, соответствуют вашим ожиданиям.

2) Создайте интерфейс (или интерфейсы), который содержит методы, соответствующие функциональности, необходимой для генерации документации. Примечание. Интерфейс не требует полной функциональности OpenXML SDK - только те функции, которые необходимы для вашего приложения.

3) Создать конкретную реализацию своего интерфейса, который направляет вызовы на OpenXML SDK

4) используют интерфейс, созданный в приложении для выполнения генерации документов.

5) Используйте NUnit и NMock (или аналогичные) для написания модульных тестов, которые управляют слоем поколения вашего приложения. Эти тесты должны использовать интерфейс с издевательством, а не экземпляр конкретной реализации. Теперь вы можете утверждать в своих тестах, что ваш уровень поколений ведет себя так, как вы ожидаете.

+0

Спасибо за ответ, но дело в том, что меня интересует тестирование кода, который напрямую управляет Open XML SDK. Все остальное я могу разделить или высмеять, это понятно. Использование mocks insdead для вызова Open XML SDK мне не по душе, поскольку то, что я хочу проверить, заключается в том, что мой код отлично работает с SDK. Кто-то может возразить, что это не чистое единичное тестирование, а то, чего не хватает в моем текущем тесте. – Andrii

+1

То, что я описал, это модульное тестирование вашего кода. Я бы назвал то, что вам нужно, интеграционный тест. В этом случае, я думаю, вы могли бы получить SDK для вывода Word XML и написать метод, который сравнивает полученный DOM с DOM, который вы ожидаете. –

+0

Да, единица или интеграция или автоматизация пользовательского интерфейса или что будет работать. Подвести любой тип автоматизированного тестирования, которое позволит выполнить проверку (утвердить часть теста). Будет проверять сравнение DOM. Большое спасибо! – Andrii

0

Предупреждение о OpenXml SDk 2,0 и действительный код ....

Я создал документы OpenXml Powerpoints, который проверяет с помощью XML SDK 2.0 инструменты и работает в Office 2007 на моем компьютере, но при открытии документа на другом компьютере, используя Office PowerPoint 2007 он жалуется и говорит, что формат не является действительным

XML Sdk 2,0 http://www.microsoft.com/downloads/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en

2

Я на самом деле делать что-то подобное с OpenXML SDK для электронных таблиц, и я на самом деле просто написать OpenXML код апи, который открывает файл из стрела м для целей тестирования. Тесты Unit на самом деле не говорят вам достаточно, так как вам нужно знать, является ли он действительным файлом.

// There should be a sheet for every team 
[TestMethod] 
[HostType("Moles")] 
public void CaseExportTeamSheetsTest() 
{ 
    IRepository<ServiceTbl, ServiceTbl> ServiceRepository; 
    CaseController target; 
    BuildCaseControllerMoledCases(out ServiceRepository, out target); 
    FileStreamResult actual = target.Export(); using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(actual.FileStream, false)) 
    { 
     var services = ServiceRepository.All; 

     foreach (var item in services) 
     { 
      // get a worksheet foreach service 
      var sheets = spreadsheetDocument.WorkbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == item.ServiceName); 
      Assert.IsTrue(sheets.Count() > 0); 
     } 
    } 

    actual.FileStream.Close(); 
    actual.FileStream.Dispose(); 
} 
Смежные вопросы