gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 20:12:44 25 4
gpt4 key购买 nike

你好,

我最近在使用 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 { }

但要保持开放的态度以获得更好的解决方案。

最佳答案

在你的基类中使用:

sub SKIP_CLASS { shift eq __PACKAGE__ }

这会在运行测试期间将 Base::Class 作为一个实际的 Test::Class 忽略,因此启动/关闭方法只会为 Some::调用类

关于perl - Test::Class 启动/设置继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5073678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com