Как разработать модульные тесты для нескольких модулей Perl в одном и том же дистрибутиве? - PullRequest
5 голосов
/ 03 февраля 2010

Я занимаюсь разработкой внутренней структуры, которая разработана с кучей модулей Perl. Все эти модули зависят от одного модуля, который предоставляет некоторые функции Win32. Например, Модули A, B, C, D и т. Д. Зависят от одного модуля Z. Поэтому все эти модули будут импортироваться с помощью «use MyFramework :: Z». Все эти модули A, B, C и т. Д. Могут использоваться по отдельности и не зависят от каких-либо других каркасных модулей.

Теперь, имея в виду эту простую конструкцию - как мне проектировать мои модульные тесты. Я планирую использовать Test :: More для выполнения всех модульных тестов. Должен ли я написать отдельные модульные тесты для каждого модуля? Есть 25 различных модулей, которые принадлежат этой структуре. Есть предложения?

Ответы [ 3 ]

6 голосов
/ 03 февраля 2010

Модульные тесты для Z должны охватывать функциональность Win32.

Модульные тесты для A должны охватывать функциональность A, которая не охватывается Z. Повторите для B, C, D и т. Д.

Если вы обнаружите, что C, E и G делают схожие вещи, и вы пишете почти идентичные модульные тесты, это сигнал к рефакторингу - извлеките общие компоненты до более высокого уровня (например, , модуль CEG) и просто оставьте и протестируйте специальные части C, E и G в их исходных модулях.

2 голосов
/ 03 февраля 2010

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

Если вы считаете, что это важночтобы иметь возможность тестировать свой код независимо от среды Win32, создайте некоторый код модуля (специально для тестов), который эмулирует интерфейс модуля, специфичного для Win32.Оператор package вместе с некоторыми урезанными функциями может отлично справиться с задачей, в зависимости от того, что на самом деле делает настоящий модуль.

1 голос
/ 03 февраля 2010

Есть несколько вещей, которые вы можете сделать:

  1. Начните писать их!;)
  2. Один тест на модуль (как вы предложили) и попытайтесь протестировать «только» код, который вы тестируете.(звучит очевидно, но легко начать думать о взаимодействии с другими модулями)
  3. Ознакомьтесь с тестами модулей на CPAN для примеров
  4. Подробнее о BDD и TDD
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...