gpt4 book ai didi

perl - 如果要测试的模块不可用,我应该如何终止 perl 测试脚本?

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

我正在将 perl 应用程序构建为“modulino”以简化测试。目录结构如下所示:

MainScript.pm
t/001_load.t
t/002_setup.t
t/003_etc...

每个 .t 测试文件中的第一个测试还加载模块:

BEGIN { use_ok('MainScript'); }

为了测试,我在顶级目录中运行以下命令:

prove -l

到目前为止一切都很好。我遇到问题的地方是我不小心直接运行了 .t 测试脚本。

在我的文本编辑器中保存脚本后,我的手指几乎是自动按下热键运行脚本的习惯。当我对其中一个测试文件执行此操作时,它尽职尽责地运行并报告全面失败。这是意料之中的,因为如果从它自己的目录运行,它看不到模块。我担心的是一些测试会写入文件系统。示例是用于验证的配置文件和数据文件。如果测试脚本无法加载它应该测试的模块,我的偏好是让测试脚本在执行任何操作之前发出声音。这样,我就不必担心测试的其余部分会出现任何问题。

我目前使用的解决方案是替换 BEGIN { use_ok('MainScript'); 标准使用调用行:

use MainScript;

使用 prove -l 运行测试仍然按预期工作。即使删除了 use_ok 测试,它显然没问题,因为文件的其余部分仍在运行。如果出于某种原因,测试找不到模块,它会停止运行并且“证明”仍然显示测试文件失败。如果我直接从编辑器运行脚本,它会在编译时失败,并显示一条消息,指出在@INC 中找不到请求的模块。这对我来说似乎是一种理想的行为。

有没有更好的方法来做到这一点,和/或这种方法中有什么东西会阻碍我前进吗?

最佳答案

我一直都是这样做的。

我有一个测试(通常命名为 00-load.t)执行 use_ok 并且没有别的(除了打印版本号)。实际执行该模块的所有测试都执行正常的使用,因为如果失败,则继续进行测试就没有意义了。

关于perl - 如果要测试的模块不可用,我应该如何终止 perl 测试脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8886381/

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