{ package BaseClass; use base qw( Test::Class ); use Test::More; sub setup : Tests( setup => 1 ) { pass "base setup"; } sub test: Test { pass "the test"; } } { package SubClass; use base qw( BaseClass ); use Test::More; sub setup : Tests( setup => +1 ) { my $self = shift; $self->SUPER::setup; pass "subclass setup"; } } Test::Class->runtests; __END__ prove -v foo.t # # SubClass->test 1..5 ok 1 - base setup ok 2 - subclass setup ok 3 - the test # # BaseClass->test ok 4 - base setup ok 5 - the test ok 81 ms