perl - Test::Class 启动/设置继承的问题

  显示原文与译文双语对照的内容
0 0

今天,

最近,我正在使用 Test::Class perl模块进行一些测试,并遇到了一个奇怪的问题。 基本上,我有一个从 Test::Class 继承的基类


package Base::Class;
use base qw(Test::Class);

setup : Test(startup) {
 # Create a DB from scratch
}

teardown : Test(shutdown) {
 # DROP database 
}

然后我有一系列的测试类继承了这个基类


package Some::Class;
use base qw(Base::Class);

sub actually_relevant_tests { }

但是,当我运行测试脚本时:


use Some::Class;

Test::Class->runtests;

创建数据库并将它的删除两次? 为基类一次,对于子类一次 ! 如果没有解决方案,你怎么避免这个问题?

谢谢。

编辑:我现在最接近优雅的东西是-


use Test::Class;
my $object = Some::Class->new();
Test::Class->runtests($object);

package Some::Class;
use Base::Class;

sub actually_relevant_tests { } 

但是为了更好的解决问题。

时间: 原作者:

0 0

你能去掉继承层次的一层? 为什么不将设置和拆分委托给 helper 函数?


package My::DB::Helpers;

sub setup_db {...}

sub teardown_db {...}

然后


package Some::Class;
use My::DB::Helpers;
use base 'Test::Class';

setup : Test(startup) {
 My::DB::Helpers::setup_db;
}

teardown : Test(shutdown) {
 My::DB::Helpers::teardown_db; 
}

原作者:
0 0

在基类中使用:


sub SKIP_CLASS { shift eq __PACKAGE__ }

在runtests中将 Base::Class 忽略为 acutal Test::Class,因此启动/关闭方法将只调用 Some::Class

原作者:
...