Test2
СОДЕРЖАНИЕ
- НАЗВАНИЕ
- ОПИСАНИЕ
- НАЧАЛО РАБОТЫ
- РАСПРЕДЕЛЕНИЕ ПРОСТРАНСТВ ИМЁН
- СМОТРИТЕ ТАКЖЕ
- КОНТАКТЫ
- ИСТОЧНИК
- СОЗДАТЕЛИ
- АВТОРЫ
- АВТОРСКИЕ ПРАВА
НАЗВАНИЕ
Test2 — Фреймворк для написания инструментов тестирования, которые работают вместе.
ОПИСАНИЕ
Test2 — новый фреймворк для тестирования, созданный путем форкинга Test::Builder, полностью переработанный, с добавлением многих новых функций и возможностей.
ЧТО НОВОГО?
- Проще тестировать новые инструменты тестирования.
-
С самого начала Test2 был разработан с возможностями интроспекции. С Test::Builder захватить вывод инструмента тестирования для проверки было сложно, если не сказать невозможно. Test2 упрощает это с помощью
Test2::API::intercept(). - Улучшенные возможности диагностики.
-
Test2 использует объект Test2::API::Context для отслеживания имени файла, номера строки и деталей инструмента. Этот объект значительно упрощает отслеживание того, где должны быть сообщены ошибки.
- Управляемый событиями.
-
Инструменты, основанные на Test2, генерируют события, которые передаются через систему обработки перед выводом форматировщиком. Эта система событий позволяет использовать богатую поддержку плагинов и расширений.
- Более полный API.
-
Test::Builder предоставляет лишь несколько методов для создания строк TAP. Test2 проанализировал все, что люди делали с Test::Builder, требуя его модификации. Test2 сделал общедоступными API-функции для практически всех необходимых функций, которые раньше отсутствовали.
- Поддержка вывода, отличного от TAP.
-
Test::Builder предполагал, что все закончится в TAP. Test2 не делает таких предположений. Test2 предоставляет способы указания альтернативных и настраиваемых форматов.
- Реализация подтестов более адекватна.
-
Реализация подтестов в Test::Builder была явно неадекватной. Test2 использует стековую систему центра событий, которая значительно улучшает реализацию подтестов.
- Поддержка потоков/разделения.
-
Поддержка Test2 для разделения и потоков может быть включена с помощью Test2::IPC. После включения разделение и потоки работают адекватно и так, как ожидалось.
НАЧАЛО РАБОТЫ
Если вы заинтересованы в написании тестов с использованием новых инструментов, обратитесь к Test2::Suite. Test2::Suite — отдельный дистрибутив cpan, содержащий множество реализованных в Test2 инструментов.
Если вы заинтересованы в написании новых инструментов, сначала ознакомьтесь с Test2::API.
РАСПРЕДЕЛЕНИЕ ПРОСТРАНСТВ ИМЁН
Это описывает структуру пространств имен экосистемы Test2. Не все перечисленные здесь пространства имен являются частью дистрибутива Test2, некоторые реализованы в Test2::Suite.
Test2::Tools::
Это пространство имен для наборов инструментов. Модули в этом пространстве имен должны экспортировать инструменты, такие как ok() и is(). Большая часть кода для Test2 должна находиться здесь. Модули в этом пространстве имен НЕ должны экспортировать подпрограммы из других инструментов. Обратитесь к пространству имен "Test2::Bundle::", если вы хотите это сделать.
Test2::Plugin::
Это пространство имен для плагинов. Плагины — это модули, которые изменяют или улучшают поведение Test2. Пример плагина — модуль, который устанавливает кодировку utf8 глобально. Другой пример — модуль, который вызывает событие выхода после первой ошибки теста.
Test2::Bundle::
Это пространство имен для наборов инструментов и плагинов. Загрузка одного из этих наборов может загрузить несколько инструментов и плагинов. Модули в этом пространстве имен не должны реализовывать инструменты напрямую. В общем, модули в этом пространстве имен должны загружать инструменты и плагины, затем повторно экспортировать их в пространство имен потребителя.
Test2::Require::
Это пространство имен для модулей, которые заставляют тест быть пропущенным, когда условия не позволяют его выполнить. Примеры — модули, пропускающие тест в устаревших версиях Perl или когда необходимые модули не установлены.
Test2::Formatter::
Форматировщики находятся в этом пространстве имен. Test2::Formatter::TAP — единственный текущий форматировщик. Допустимо, чтобы сторонние дистрибутивы создавали новые форматировщики в этом пространстве имен.
Test2::Event::
События находятся в этом пространстве имен. Считается допустимым, чтобы сторонние дистрибутивы добавляли новые типы событий в это пространство имен.
Test2::Hub::
Подклассы Hub (и некоторые утилитарные объекты Hub) находятся в этом пространстве имен. Совершенно приемлемо, чтобы сторонние дистрибутивы добавляли новые подклассы Hub в это пространство имен.
Test2::IPC::
Подсистема IPC находится в этом пространстве имен. Существует не много веских причин добавить что-либо в это пространство имен, за исключением драйверов IPC.
Test2::IPC::Driver::
Драйверы IPC находятся в этом пространстве имен. Вполне допустимо создавать новые драйверы IPC и помещать их в это пространство имен.
Test2::Util::
Это пространство имен для общих утилит, используемых инструментами тестирования. Пожалуйста, будьте внимательны при добавлении новых модулей в это пространство имен.
Test2::API::
Это для API Test2 и связанных пакетов.
Test2::
Пространство имен Test2:: предназначено для расширений и фреймворков. Инструменты, плагины и т.д. не должны попадать непосредственно в это пространство имен. Однако расширения, используемые для создания инструментов и плагинов, могут находиться здесь.
Короче: если модуль экспортирует что-либо, что должно выполняться напрямую скриптом теста, оно, вероятно, НЕ должно попадать непосредственно в Test2::XXX.
СМОТРИТЕ ТАКЖЕ
Test2::API — основные API-функции.
Test2::API::Context — подробное описание объекта контекста.
Test2::IPC — система IPC, используемая для поддержки потоков/разделения.
Test2::Formatter — форматировщики, такие как TAP, находятся здесь.
Test2::Event — события находятся в этом пространстве имен.
Test2::Hub — все события в конечном итоге проходят через концентратор. Настраиваемые концентраторы — это способ реализации intercept() и run_subtest().
КОНТАКТЫ
Многие разработчики и пользователи Test2 находятся на irc://irc.perl.org/#perl-qa и irc://irc.perl.org/#toolchain. У нас также есть команда Slack, к которой может присоединиться любой с @cpan.org адресом электронной почты https://perl-test2.slack.com/. Если у вас нет @cpan.org адреса электронной почты, вы можете запросить приглашение в Slack, отправив письмо Чаду Грануму <exodist@cpan.org>.
ИСТОЧНИК
Репозиторий исходного кода Test2 находится по адресу http://github.com/Test-More/test-more/.
СОЗДАТЕЛИ
- Чэд Гранум <exodist@cpan.org>
АВТОРЫ
- Чэд Гранум <exodist@cpan.org>
АВТОРСКИЕ ПРАВА
Авторские права 2020 Чэд Гранум <exodist@cpan.org>.
Эта программа является свободной программной; вы можете распространять и/или модифицировать ее в соответствии с теми же условиями, что и Perl сам по себе.
См. http://dev.perl.org/licenses/
© 1993–2021 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.36.0/Test2