Нет, я не проводил модульное тестирование поколения MS Word, но, как говорит Ingó Vals, он не должен отличаться от других форм модульного тестирования.
1) [Дополнительно - для обеспечения правильного использования SDK для ваших нужд]. Узнайте, как ваше приложение должно управлять SDK. Напишите некоторые тестовые сценарии, которые имитируют предполагаемые функции, и убедитесь, что документы Word, которые они генерируют, соответствуют вашим ожиданиям.
2) Создайте интерфейс (или интерфейсы), который содержит методы, соответствующие функциональности, необходимой для генерации документации. Примечание. Интерфейс не требует полной функциональности OpenXML SDK - только те функции, которые необходимы для вашего приложения.
3) Создать конкретную реализацию своего интерфейса, который направляет вызовы на OpenXML SDK
4) используют интерфейс, созданный в приложении для выполнения генерации документов.
5) Используйте NUnit и NMock (или аналогичные) для написания модульных тестов, которые управляют слоем поколения вашего приложения. Эти тесты должны использовать интерфейс с издевательством, а не экземпляр конкретной реализации. Теперь вы можете утверждать в своих тестах, что ваш уровень поколений ведет себя так, как вы ожидаете.
Почему модульное тестирование OpenXML должно отличаться от стандарта. Вы пытаетесь проверить, может ли документ открыться словом или если он будет выглядеть хорошо? –
Это не так, просто технически сложно. Типичным тестом является Arrange-Act-Assert. Итак, вопрос в том, как мы можем легко сделать последнюю часть - Assert. Возможно, с использованием некоторой автоматизации слова или автоматизации автоматизации пользовательского интерфейса, но я не вижу простого способа сделать это. Таким образом, я получаю тесты, генерирующие отчет и открывающиеся словом, поэтому я вручную проверяю, хорошо ли отчет. Это не «чистый» модульный тест, но лучше, чем запуск полного приложения для создания необходимых отчетов. Также меня интересует тестирование кода, который работает непосредственно с Open XML, все остальные части, которые я разделял и тестировал с помощью обычных модульных тестов. – Andrii