Как тестировать модули слияния WIX? - PullRequest
3 голосов
/ 21 декабря 2010

Я строю модули слияния с WIX. Пакетные файлы, которые вызывают инструменты WIX для генерации модулей слияния из файлов * .wxs, выполняются моей ежедневной сборкой.

Я пытаюсь понять, как я могу автоматизировать тестирование этих модулей слияния. Я хотел бы проверить, устанавливает ли модуль слияния требуемые файлы, правильные ли версии файлов и т. Д.

У меня есть одна идея - написать скрипт (может быть, VB Script), чтобы установить модуль слияния во временном местоположении и проверить, правильно ли он все установил. Однако я не уверен, что это правильный способ сделать это.

Существуют ли стандартные способы написания модульных тестов для модулей слияния? Любые идеи о том, как это сделать, приветствуются.

Ответы [ 3 ]

3 голосов
/ 22 декабря 2010

Когда вы тестируете установщик, основными целями являются:

  1. При установке MSI-файла msiexec сообщает об успехе (т.е. код возврата 0).
  2. После запуска установщика ваше приложение может быть запущено и работает как положено.

Первый пункт должен быть достаточно легким для выполнения, хотя, если вы хотите сохранить тест автоматизированным, вы можете проверить только неинтерактивную установку. Вот пример, как это сделать из командного файла или из командной строки:

msiexec /i myinstaller.msi /passive || echo ERROR: non-zero return code!

Второй пункт немного сложнее. Я думаю, что лучший способ добиться этого - встроить в ваше приложение интеграционные тесты и вызвать их после установки:

"c:\program files\mystuff\app.exe" /selftest || echo ERROR: non-zero return code!

В вашем случае вы тестируете модуль слияния, а не весь установщик. Тот же подход может быть использован. Вам просто нужно будет выполнить дополнительную работу по созданию приложения для «самопроверки» и его установщика, который использует ваш модуль слияния.

1 голос
/ 22 декабря 2010

Я часто думал об этом, но не придумал ничего, что мне нравится.Сначала я бы назвал это интеграционное тестирование не строго модульным тестированием.Во-вторых, проблему «правильных файлов» и «правильных версий» сложно определить.

Мне часто хочется сказать, что WiX / MSI - это просто данные, которые определяют, что должен делать установщик.Это декларативный характер и, следовательно, по определению правильный.Заманчиво захотеть создать еще один набор данных, который будет перепроверять реализацию установщика, но что именно это делает, что первый набор данных еще не представлял?Иногда достаточно сложно поддерживать, какие файлы попадают в приложение, но в одиночку, чтобы поддерживать второй список файлов.

Я продолжаю думать об этом и удивляюсь, есть ли подход, который будет иметь смысл, но на данный момент я простосделать мою обычную проверку MSI.

1 голос
/ 21 декабря 2010

Вы можете попытаться использовать сценарии или другую небольшую консольную программу, которая выполнит эту работу, как вы и предлагали.

С помощью процесса сборки вы также можете создать базовую настройку, которая просто использует модуль слияния. Ваш скрипт может просто установить это, запустить другой скрипт или консольное приложение, которое проверит, все ли файлы на месте, правильная ли у них версия, установлены ли все ключи реестра и т. Д. После того, как весь вывод собран, ваш главный скрипт просто удалил бы все Вы также можете запустить программу проверки после удаления, чтобы убедиться, что все прошло и что удаление работает правильно. Я бы порекомендовал это, если, например, у вас установлены пользовательские действия для установки и удаления.

В идеале весь этот процесс установки / удаления должен выполняться на отдельном или виртуальном компьютере, чтобы избежать путаницы на сервере сборки.

У вас будет некоторая работа со всеми этими сценариями, но как только она у вас будет, вы сможете использовать ее с небольшими изменениями для любых других будущих проектов модуля слияния или просто для простых проектов установки.

Надеюсь, это поможет,

Адриан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...