Главная > Perl > День 4: Тестирование

День 4: Тестирование

Четвертая статья цикла Perl 6 Advent Calendar на русском языке.

Авторы Perl имеют давнюю привычку снабжать тестами свои модули, и в Perl 6 мы планируем продолжить эту замечательную традицию.

Тестирование очень простое. Традиционный perl-way – это выводить данные в Test Anything Protocol. Но вы не должны делать это сами, вы можете использовать для этого специальный модуль.

Предположим, что вы написали замечательную функцию вычисления факториала:

sub fac(Int $n) {
    [*] 1..$n
}

Сейчас нас не интересует как работает функция – мы хотим это выяснить. Так давайте проверим:

use v6;

sub fac(Int $n) {
    [*] 1..$n
}

use Test;
plan 6;

is fac(0), 1,  'fac(0) работает';
is fac(1), 1,  'fac(1) работает';
is fac(2), 2,  'fac(2) работает';
is fac(3), 6,  'fac(3) работает';
is fac(4), 24, 'fac(4) работает';

dies_ok { fac('ох, я же строка') }, 'можно вызывать только с целым аргументом';

И запустим:

$ perl6 fac-test.pl
1..6
ok 1 - fac(0) работает
ok 2 - fac(1) работает
ok 3 - fac(2) работает
ok 4 - fac(3) работает
ok 5 - fac(4) работает
ok 6 - можно вызывать только с целым аргументом

Здесь use Test; загружает модуль тестирования, plan 6; говорит о том, что мы хотим запустить шесть испытаний. Затем идут пять строк шаблона is $got, $expected, $description. is() сравнивает строки, но поскольку целое всегда можно представить строкой, это нормально.

И наконец строкой dies_ok { $some_code }, $description мы проверяем, что вызов функции с нецелым аргументом является критической ошибкой.

Вывод имеет следующий вид: 1..6, затем по одной строке на каждый тест, который начинается на ok (или not ok если тест провален), номер теста, пробел, тире, пробел и описание теста.

Предположим, что вы запускаете больше тестов и не хотите смотреть на вывод каждого, но хотите общий результат. Команда prove из Perl 5 даст вам следующее:

prove --exec perl6 fac-test.pl
fac-test.pl .. ok
All tests successful.
Files=1, Tests=6, 11 wallclock secs ( 0.02 usr  0.00 sys + 10.26 cusr  0.17 csys = 10.45 CPU)
Result: PASS

Вы так же можете поместить все ваши файлы с тестами в отдельную директорию, например t/, и запустить prove рекурсивно на все .t файлы в этой директории:

prove --exec perl6 -r t

Так же неплохо поместить эту строку в ваш Makefile, чтобы просто ввести команду make для запуска тестов.

© Оригинальная статья.

VN:F [1.8.4_1055]
Rating: 5.7/10 (3 votes cast)
День 4: Тестирование5.7103
  • Print
  • PDF
  • Google Bookmarks
  • Twitter
  • Digg
  • del.icio.us
  • Reddit
  • Facebook
  • Identi.ca
  • Slashdot
  • StumbleUpon
Categories: Perl Tags:
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.