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–2023 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.38.0/Test2