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>
АВТОРСКИЕ ПРАВА
Авторские права 2019 Чэд Гранум <exodist@cpan.org>.
Эта программа является свободно распространяемым программным обеспечением; вы можете перераспределять и/или изменять его на тех же условиях, что и Perl сам по себе.
См. http://dev.perl.org/licenses/
© 1993–2020 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.30.3/Test2