代码之家  ›  专栏  ›  技术社区  ›  Mithaldu

有没有办法让test::class的“test s”sub总是像test::more的子测试一样工作?

  •  2
  • Mithaldu  · 技术社区  · 16 年前

    现在,当我这样做的时候:

    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子参数。

    然而,我想知道是否已经有一个简单的解决方案,我找不到。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Mithaldu    16 年前

    经过一些研究,我发现这似乎根本不受支持,所以,这里有一个模块我刚刚写来解决这个问题:

    Test::Class::TestGroup

        2
  •  1
  •   adrianh    15 年前

    当我得到空闲的tuits时,测试::类将被更新以支持子测试:-)

    当我们在2009年的QA Hackathon上介绍它们时,已经完成了一个初步草案。只需要找时间整理一下并与最新的修复程序合并。