Как протестировать мой проект на разных версиях внешнего API DLL? - PullRequest
4 голосов
/ 14 мая 2010

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

Есть ли какие-нибудь хорошие способы, чтобы мои модульные тесты предназначались для всех этих различных версий DLL без необходимости переписывать тесты, как только выйдет новая версия API? Как это лучше всего обрабатывается?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 14 мая 2010

Напишите адаптер или фасад, который обернет внешнюю DLL. Заставьте его реализовать интерфейс IExternalDLL (конечно, выберите более подходящее имя), который документирует / определяет ваши потребности из внешней DLL; он не должен точно имитировать сигнатуры функций фактической реализации.

Составьте набор «контрактных тестов» для интерфейса, как вы ожидаете, что интерфейс будет работать.

Теперь вы можете написать разные адаптеры для каждой версии - в случае некоторых переломных изменений с v1 на v2. Ваш клиент абстрагируется из-за интерфейса. Работа адаптера / фасада заключается в том, чтобы убедиться, что соответствующая версия dll соответствует контрактным тестам. Вы пишете один набор тестов и выполняете его со всеми реализациями адаптера / фасада. В следующий раз, когда будет выпущена новая версия - вы можете

  • используйте последний переходник / фасад, если он соответствует вашим потребностям
  • развернуть новый, чтобы исправить любые критические изменения; убедитесь, что вы выполняете его в соответствии с контрактными тестами, чтобы ваш клиент не порвал с этим адаптером.
3 голосов
/ 14 мая 2010

Если вы используете nant, team build или аналогичные, вы можете скопировать двоичный файл lib в папку, из которой ваш тестовый проект извлекает свои двоичные файлы перед запуском тестов.

Псевдо пример:

  1. Скопировать «старую версию» в двоичную папку
  2. Запуск тестов (тестовое задание в CI-системе)
  3. Скопировать «новую версию» в двоичную папку
  4. Выполнить тесты 5 ..

Это довольно просто и должно быть легко попробовать. Примечание. Ответ «Написать адаптер или фасад» - это предпочтительный способ заставить вашу программу работать с разными версиями, поэтому сделайте это, я просто говорю о тестировании на нескольких версиях.

...