有没有办法让Test :: Class的“Tests”subs总是像Test :: More的子测试一样?

时间:2010-08-16 19:23:01

标签: perl unit-testing

现在当我做这样的事情时:

use strict;
use warnings;

package My::Test;
use parent 'Test::Class';
use Test::More;

sub overrides_basic : Tests {
    ok( 1, "works" ); ok( 1, "works" );
}
sub overrides_no_profile : Tests {
    ok( 2, "works" ); ok( 2, "works" );
}
__PACKAGE__->runtests;
1;

输出是这样的:

ok 1 - works
ok 2 - works
ok 3 - works
ok 4 - works
1..4

这不是很好。

但是,如果我这样做:

use strict;
use warnings;

package My::Test;
use parent 'Test::Class';
use Test::More;

sub overrides_basic : Tests {
    subtest 'overrides_basic' => sub {
        ok( 1, "works" ); ok( 1, "works" );
    };
}
sub overrides_no_profile : Tests {
    subtest 'overrides_no_profile' => sub {
        ok( 2, "works" ); ok( 2, "works" );
    };
}
__PACKAGE__->runtests;
1;

输出更好,更可取,如下所示:

    ok 1 - works
    ok 2 - works
    1..2
ok 1 - overrides_basic
    ok 1 - works
    ok 2 - works
    1..2
ok 2 - overrides_no_profile
1..2

这里的问题是这需要做很多不必要的打字工作。所以现在,我只是对Test :: Class进行子类化以重新定义Tests sub-arg。

但是我想知道是否已经找到了一个我无法找到的简单解决方案。

2 个答案:

答案 0 :(得分:3)

经过一些研究后我发现这似乎根本没有得到支持,所以,这是我刚才写的一个模块来解决这个问题:

Test::Class::TestGroup

答案 1 :(得分:1)

Test :: Class将在我获得备用测试时更新以支持子测试: - )

我们在2009年的qa-hackathon上介绍了初稿。只需要找时间整理并合并最新的修复程序。