ziguzagu.org

はじめてのTest::Simple

テスト本が届いたのでテストをしてみるテスト。勉強日記の公開テストもかねて。

Perl Testing: A Developer's Notebook (Developers Notebook)

Test::Simpleはじめの一歩

#!/usr/bin/perl
use strict;
use warnings;

use Test::Simple tests => 1;

sub hello_world {
    return "Hello, world!";
}

ok(hello_world() eq "Hello, world!");

proveコマンドでテストを実行する。

$ prove 01-first_test.t
01-first_test....ok
All tests successful.
Files=1, Tests=1,  0 wallclock secs ( 0.06 cusr +  0.00 csys =  0.06 CPU)

うむ。tests => 1 でテスト項目の数を決めるけど、そんなのいちいち数えるのは面倒くさい。そんな場合には次のようにするとよいらしい(というか全部これ?)。

その前に、Perlのテストは拡張子を.tにするのが慣例なのでauto-mode-alistにcperl-modeで突っ込んでおくといい感じ。

Test::Simpleはじめの一歩・改

#!/usr/bin/perl
use strict;
use warnings;

use Test::Simple 'no_plan';

sub hello_world {
    return "Hello, world!";
}

ok(hello_world() eq "Hello, world!");

’no_plan’で全部やっつける。

Test::Simpleはじめの一歩・失敗バージョン

okだけだとつまらないので失敗させてみる。

#!/usr/bin/perl
use strict;
use warnings;

use Test::Simple 'no_plan';

sub hello_world {
    return "Hello, world!";
}

ok(hello_world() eq "Hello, World!");

テストの正解をs/world/World/。

[omae@colinux]% prove 01-first_noplan.t                   [~/sandbox/perl/test]
01-first_noplan....NOK 1
###   Failed test in 01-first_noplan.t at line 11.
###   in 01-first_noplan.t at line 11.
### Looks like you failed 1 test of 1.
01-first_noplan....dubious
        Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 1
        Failed 1/1 tests, 0.00% okay
Failed Test       Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
01-first_noplan.t    1   256     1    1 100.00%  1
Failed 1/1 test scripts, 0.00% okay. 1/1 subtests failed, 0.00% okay.

失敗しやがった。ざまぁみろ、ケケケッ…。

テストにコメントをつける

#!/usr/bin/perl
use strict;
use warnings;

use Test::Simple 'no_plan';

sub hello_world {
    return "Hello, world!";
}

ok(hello_world() eq "Hello, world!",
   'hello_world() output should be sane');

prove コマンドに-vオプションをつけて実行。

$ prove -v 01-first_noplan.t
01-first_noplan....ok 1 - hello_world() output should be sane
1..1
ok
All tests successful.
Files=1, Tests=1,  0 wallclock secs ( 0.01 cusr +  0.06 csys =  0.07 CPU)

通常だとファイル単位のテスト結果の表示だけど、-v(冗長モード)で一個一個のテスト結果を表示してくれる。

というわけで、mt_text_hatena.plインストールしちゃえば勉強日記がずいぶん書きやすくなる。でも、結城先生方式ではてダラつかうかどうするか…、悩みどころ。