Возможно, вы захотите воспользоваться встроенной утилитой "prove
", которая используется для ваших тестов. Обратите внимание на разницу между «diag()
» и «note()
» (определено в Test::More
):
use strict;
use warnings;
use Test::More tests => 3;
diag "My awesome test suite";
note "This message won't be visible when run via the harness";
ok(1, "test 1");
ok(1, "test 2");
ok(0, "test 3");
diag "all done!";
При запуске через "perl mytest.pl
" вы увидите это:
1..3
# My awesome test suite
# This message won't be visible when run via the harness
ok 1 - test 1
ok 2 - test 2
not ok 3 - test 3
# Failed test 'test 3'
# at foo.pl line 10.
# all done!
# Looks like you failed 1 test of 3.
При запуске через "prove mytest.pl
", вы увидите это (с небольшим текстом в ярком сердитом красном):
foo.pl .. # My awesome test suite
foo.pl .. 1/3
# Failed test 'test 3'
# at foo.pl line 10.
# all done!
# Looks like you failed 1 test of 3.
foo.pl .. Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/3 subtests
Test Summary Report
-------------------
foo.pl (Wstat: 256 Tests: 3 Failed: 1)
Failed test: 3
Non-zero exit status: 1
Files=1, Tests=3, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.01 cusr 0.01 csys = 0.06 CPU)
Result: FAIL
Вывод stderr "prove mytest.pl > stdout.txt
" будет:
# My awesome test suite
# Failed test 'test 3'
# at foo.pl line 10.
# all done!
# Looks like you failed 1 test of 3.
ТАКЖЕ , вы можете создать свой собственный тестовый комплект и собирать статистику о тестах, которые вы только что провели с Test::Harness
. Давайте посмотрим, что происходит, когда мы используем тестовый скрипт, который мы написали выше:
use strict;
use warnings;
use Test::Harness;
use Data::Dumper;
my @results = Test::Harness::execute_tests( tests => ["mytest.pl"] );
print Dumper(\@results);
Выходные данные:
# My awesome test suite
foo.pl .. 1/3
# Failed test 'test 3'
# at foo.pl line 10.
# all done!
# Looks like you failed 1 test of 3.
foo.pl ..
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/3 subtests
$VAR1 = [
{
'files' => 1,
'max' => 3,
'bonus' => 0,
'skipped' => 0,
'sub_skipped' => 0,
'ok' => 2,
'bad' => 1,
'good' => 0,
'tests' => 1,
'bench' => bless( [
0,
'0.02',
'0.01',
'0.01',
'0.01',
0
], 'Benchmark' ),
'todo' => 0
},
{
'foo.pl' => {
'name' => 'foo.pl',
'max' => 3,
'canon' => '3',
'wstat' => '256',
'failed' => 1,
'estat' => 1
}
},
{}
];