Существуют ли какие-нибудь хорошие автоматизированные наборы тестов для Perl?[закрыто]
-
09-06-2019 - |
Вопрос
Кто-нибудь может предложить какой-нибудь хороший фреймворк автоматизированного набора тестов для Perl?
Решение
Это действительно зависит от того, что вы пытаетесь сделать, но вот некоторые предпосылки для большей части этого.
Во-первых, вы обычно пишете свои тестовые программы с помощью Test::More или Test::Simple в качестве основной программы тестирования:
use Test::More tests => 2;
is 3, 3, 'basic equality should work';
ok !0, '... and zero should be false';
Внутренне Test::Builder вызывается для вывода этих результатов тестирования в виде TAP (Протестируйте Любой протокол).Test::Harness (тонкая обертка вокруг TAP:: Harness) считывает и интерпретирует сигнал, сообщая вам, прошли ли ваши тесты или нет.Упомянутый выше инструмент "prove" поставляется в комплекте с Test::Harness, поэтому предположим, что сохраните вышеуказанное в каталоге t / (стандартный каталог тестирования Perl) как "numbers.t", затем вы можете запустить его с помощью этой команды:
prove --verbose t/numbers.t
Или запустить все тесты в этом каталоге (рекурсивно, предполагая, что вы хотите перейти в подкаталоги):
prove --verbose -r t/
(--многословие, конечно, необязательно).
В качестве дополнительного примечания, не используйте TestUnit.Многие люди рекомендуют его, но от него давным-давно отказались и он не интегрируется с современными инструментами тестирования.
Другие советы
Проверьте Тестировщики CPAN, в которых есть множество инструментов для автоматизированного тестирования.Большая часть этого должна быть на CPAN, чтобы вы могли модифицировать ее в соответствии с вашими потребностями.Также очень легко написать свой собственный тестер, используя TAP::Harness.
Что именно вам нужно сделать и как вы пытаетесь вписать это в свой процесс?
Пока вы используете тесты, которые выдают вывод TAP (Test Anything Protocol), вы можете счесть это полезным: http://sourceforge.net/projects/smolder
Вы видели тлеющий?
"Агрегатор тестов Smoke, используемый разработчиками и тестировщиками для загрузки (автоматической или вручную) и просмотра тестов smoke / регрессии с использованием протокола Test Anything.Подробная информация и тенденции отображаются в виде графиков, а уведомления предоставляются по электронной почте или через каналы Atom ".
Если я вас правильно понял, вы ищете КРАН:: Жгут проводов
Если вы используете ExtUtils::Создатель или Модуль::Сборка, затем вы можете запускать все свои тесты автоматически, введя команду "make test" или "Build test", которая выполнит любые файлы *.t в подпапке t / вашего проекта.
Если вы не используете ни то, ни другое, то вы можете использовать КРАН:: Жгут проводов для автоматизации выполнения нескольких тестовых сценариев.
Чтобы на самом деле написать тесты, используйте Тест::Подробнее или любой из модулей, которые другие предложили здесь.
мы должны запустить все тестовые файлы для тестирования вручную
Вы, конечно, хотите использовать prove (запускает ваш тест) и / или Module ::Build (создает ваш код, а затем запускает ваши тесты, используя тот же код test harness, который prove использует внутри компании.)
Ты сказал:
"То, что я ищу, - это более автоматизированный фреймворк, который может выполнять инкрементное тестирование / проверки сборки и т.д."
Все еще не совсем уверен, чего ты добиваешься.Как упоминали другие, вы хотите взглянуть на вещи, основанные на Test::Harness / TAP.Подавляющее большинство сообщества по тестированию Perl использует этот фреймворк, так что вы получите гораздо больше поддержки (и полезного существующего кода), используя его.
Не могли бы вы рассказать немного больше о том, что вы подразумеваете под "инкрементным тестированием / проверкой сборки"?
Я предполагаю, что вы хотите разделить свои тесты на группы, чтобы запускать определенные наборы тестов только при определенных обстоятельствах?
Есть несколько способов сделать это.Самым простым было бы просто использовать файловую систему - разделите свои тестовые каталоги, чтобы у вас были такие вещи, как:
core/ database.t infrastructure.t style/ percritic.t ui/ something.t something-else.t
И так далее...затем вы можете использовать инструмент командной строки "prove", чтобы запустить их все или только определенные каталоги и т.д.
в prove есть множество полезных опций, которые позволяют вам выбирать, какие тесты запускать и в каком порядке (напримертакие вещи, как самый последний неудачный заказ).Это - само по себе - вероятно, приведет вас к тому, что вам нужно.
(Кстати, важно получить последнюю версию Test::Simple/prove /etc.из CPAN.Последние версии обладают гораздо, гораздо большей функциональностью).
Если вы придерживаетесь OO-подхода или имеете предыдущий опыт работы с фреймворками xUnit, возможно, вам захочется взглянуть на Test::Class, который представляет собой фреймворк xUnit на Perl, построенный поверх слоя TAP / Test::Harness .Я думаю, что это намного лучше, чем PerlUnit - но я бы сказал это с тех пор, как я это написал :-)
Проверьте delicious для получения дополнительной информации о Test::Class http://delicious.com/tag/Test::Class
Если это не то, что вам нужно - не могли бы вы поподробнее рассказать о том, какую функциональность вы хотите?
Ваше здоровье,
Адриан
Лично мне больше всего нравится Test::, это в основном Test::More с некоторыми добавленными интересными функциями.
Выбранный фреймворк набора тестов - это Проверка::Жгут проводов, который заботится об управлении тестовым запуском, сборе результатов и т.д.
Существуют различные модули для предоставления определенных видов тестов, наиболее распространенные из которых можно найти в Тест::Простой и Тест::Подробнее (оба включены в дистрибутив Test-Simple).Все пространство имен Test в CPAN предназначено для специализированных модулей модульного тестирования, большинство из которых предназначены для запуска в режиме Test::Harness.
По соглашению тесты хранятся в каталоге t/ проекта, и каждый тестовый файл использует расширение файла .t ;тесты обычно выполняются с помощью
prove t/*.t
Дистрибутивы модулей обычно включают в себя цель make с именем "test", которая запускает набор тестов перед установкой.По умолчанию процесс установки CPAN требует, чтобы тесты проходили после сборки, прежде чем будет установлен модуль.
Я бы выбрал Test::More или вообще все, что выводит КОСНИТЕСЬ
На данный момент мы используем Test::More, но текущая проблема заключается в том, что мы должны запускать все тестовые файлы вручную для тестирования.То, что я ищу, - это более автоматизированный фреймворк, который может выполнять инкрементное тестирование / проверки сборки и т.д.
Обертка вокруг Test::More для этого была бы идеальной, но подойдет и что-нибудь лучшее и более функциональное.
Я просматриваю PerlUnit, чтобы посмотреть, поможет ли это.
Знаете ли вы об утилите "prove" (из App::Prove)?Вы можете указать ему запускать все тесты рекурсивно в заданном каталоге, с подробностями или без них и т.д.
Для автоматического тестирования в perl взгляните на Проверка::Жгут проводов, который содержит prove
инструмент.
Тот Самый prove
инструмент может быть запущен с помощью следующей команды:
prove -r -Ilib t
Это приведет к рекурсивной проверке всех файлов *.t в каталоге 't/' при добавлении lib
к пути включения.