Может ли кто-нибудь предложить хорошую платформу автоматизированного набора тестов для Perl?





Я бы выбрал Test :: More или вообще все, что выводит КРАН
На данный момент мы используем Test :: More, но текущая проблема заключается в том, что мы должны запускать все тестовые файлы вручную для тестирования. Я ищу более автоматизированный фреймворк, который может выполнять инкрементное тестирование / проверки сборки и т. д.
Обертка вокруг Test :: More для этого была бы идеальной, но подойдет и что-нибудь получше и функциональнее.
Я просматриваю PerlUnit, чтобы посмотреть, поможет ли это.
Если я вас правильно понял, вы ищете TAP :: Жгут
Если вы используете ExtUtils :: MakeMaker или Модуль :: Сборка, вы можете запускать все тесты автоматически, введя команду «make test» или «Build test», которая выполнит любые файлы * .t в подпапке t / вашего проекта.
Если вы не используете ни один из них, вы можете использовать TAP :: Жгут для автоматизации выполнения нескольких тестовых сценариев.
Чтобы на самом деле написать тесты, используйте Test :: Подробнее или любой из модулей, предложенных здесь другими.
Известно ли вам о служебной программе «Доказать» (из App :: Prove)? Вы можете указать ему, чтобы все тесты выполнялись рекурсивно в заданном каталоге, с подробным описанием или без него и т. д.
Лично мне нравится Test :: Most, в основном это Test :: More с некоторыми добавленными интересными функциями.
Пока вы используете тесты, которые производят вывод TAP (Test Anything Protocol), вы можете найти это полезным: http://sourceforge.net/projects/smolder
Обратите внимание на Тестеры CPAN, в котором есть много инструментов для автоматического тестирования. Большая часть этого должна быть на CPAN, чтобы вы могли изменить ее в соответствии со своими потребностями. Также очень легко написать свой собственный тестер, используя TAP :: Harness.
Что именно вам нужно делать и как вы пытаетесь вписать это в свой процесс?
Это действительно зависит от того, что вы пытаетесь сделать, но вот некоторые предыстории для большей части этого.
Во-первых, вы обычно пишете свои тестовые программы, используя 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 Anything). Test :: Harness (тонкая оболочка вокруг TAP :: Harness) читает и интерпретирует TAP, сообщая вам, прошли ли ваши тесты или нет. Упомянутый выше инструмент «proof» входит в комплект Test :: Harness, поэтому допустим, что вы сохраните указанное выше в каталоге t / (стандартный каталог тестирования Perl) как «numbers.t», затем вы можете запустить его с помощью этой команды:
prove --verbose t/numbers.t
Или запустить все тесты в этом каталоге (рекурсивно, если вы хотите спуститься в подкаталоги):
prove --verbose -r t/
(--verbose, конечно, необязательно).
В качестве примечания не используйте TestUnit. Многие рекомендуют его, но он давно заброшен и не интегрируется с современными инструментами тестирования.
we have to run all the test files manually for testing
Вы, безусловно, хотите использовать proof (запускает ваш тест) и / или Module :: Build (строит ваш код, а затем запускает ваши тесты, используя тот же код тестовой оснастки, который доказывает использование внутри).
Для автоматического тестирования в Perl взгляните на Тест :: Жгут, который содержит инструмент prove.
Инструмент prove можно запустить с помощью следующей команды:
prove -r -Ilib t
Это повторно проверит все файлы * .t в каталоге 't /', добавив lib в путь включения.
Выбранный фреймворк набора тестов - Тест :: Жгут, который отвечает за управление запуском теста, сбор результатов и т. д.
Существуют различные модули для предоставления определенных видов тестов, наиболее распространенные из которых можно найти в Тест :: Простой и Test :: Подробнее (оба включены в дистрибутив Test-Simple). Все пространство имен Test на CPAN посвящено специализированным модулям модульного тестирования, большинство из которых предназначены для запуска под Test :: Harness.
По соглашению, тесты хранятся в каталоге t / проекта, и каждый тестовый файл использует расширение файла .t; тесты обычно запускаются через
prove t/*.t
Дистрибутивы модулей обычно включают цель make с именем test, которая запускает набор тестов перед установкой. По умолчанию процесс установки CPAN требует, чтобы тесты проходили после сборки, прежде чем модуль будет установлен.
Вы видели тлеть?
«Агрегатор дымовых тестов, используемый разработчиками и тестировщиками для загрузки (автоматически или вручную) и просмотра дымовых / регрессионных тестов с использованием протокола Test Anything. Подробности и тенденции отображаются в виде графиков, а уведомления предоставляются по электронной почте или через каналы Atom».
Это хорошо, но Smolder, похоже, больше не анализирует архивы TAP правильно.
Ты сказал:
"What I am looking for is a more of automated framework which can do incremental testing/build checks etc"
Все еще не совсем уверен, что вам нужно. Как уже упоминали другие, вы хотите посмотреть на вещи, основанные на Test :: Harness / TAP. Подавляющее большинство участников сообщества тестирования Perl использует эту структуру, поэтому вы получите гораздо больше поддержки (и полезного существующего кода), используя ее.
Не могли бы вы подробнее рассказать о том, что вы подразумеваете под «инкрементным тестированием / проверками сборки»?
Я предполагаю, что вы хотите разделить свои тесты на группы, чтобы выполнять только определенные наборы тестов при определенных обстоятельствах?
Есть несколько способов сделать это. Самым простым было бы просто использовать файловую систему - разделить тестовые каталоги, чтобы у вас было что-то вроде:
core/ database.t infrastructure.t style/ percritic.t ui/ something.t something-else.t
И так далее ... затем вы можете использовать инструмент командной строки «proof», чтобы запустить их все или только определенные каталоги и т. д.
Доказательство имеет множество полезных опций, которые позволяют вам выбирать, какие тесты запускать и в каком порядке (например, такие вещи, как порядок последних сбоев). Это - само по себе - вероятно, приведет вас к тому, что вам нужно.
(Кстати, важно получить последнюю версию Test :: Simple / proof / etc. От CPAN. Последние версии имеют гораздо больше функциональных возможностей).
Если вы придерживаетесь объектно-ориентированного мышления или имеете предыдущий опыт работы с фреймворками xUnit, возможно, вы захотите взглянуть на Test :: Class, который представляет собой фреймворк Perl xUnit, построенный поверх уровня TAP / Test :: Harness. Я думаю, что это намного лучше, чем PerlUnit, но я бы сказал это, поскольку я его написал :-)
Посмотрите вкусно, чтобы узнать больше о Test :: Class http://delicious.com/tag/Test::Class
Если это не то, что вам нужно, не могли бы вы подробнее рассказать о том, какие функции вам нужны?
Ваше здоровье,
Адриан
Пожалуйста, не используйте PerlUnit. Он был заброшен. Если вам необходим фреймворк стиля xUnit, см. <a href="search.cpan.org/dist/Test-Class/">Test::Class</a>. Он активно поддерживается и интегрируется со стандартным фреймворком тестирования Perl.