有人可以推荐一些好的 Perl 自动化测试套件框架吗?

有帮助吗?

解决方案

这实际上取决于您想要做什么,但这里有一些背景知识。

首先,您通常会使用 Test::More 或 Test::Simple 作为核心测试程序来编写测试程序:

use Test::More tests => 2;

is 3, 3, 'basic equality should work';
ok !0, '... and zero should be false';

在内部,调用 Test::Builder 将这些测试结果输出为 TAP (测试任何协议)。Test::Harness(TAP::Harness 的薄包装)读取并解释 TAP,告诉您测试是否通过或失败。上面提到的“证明”工具与 Test::Harness 捆绑在一起,因此假设将上面的内容保存在 t/ 目录(标准 Perl 测试目录)中作为“numbers.t”,然后您可以使用以下命令运行它:

prove --verbose t/numbers.t

或者运行该目录中的所有测试(递归地,假设您想进入子目录):

prove --verbose -r t/

(--verbose,当然,是可选的)。

附带说明一下,不要使用 TestUnit。很多人推荐它,但它很早以前就被放弃了,并且没有与现代测试工具集成。

其他提示

查看 CPAN测试仪, ,其中有很多用于自动化测试的工具。其中大部分应该位于 CPAN 上,以便您可以对其进行修改以满足您的需求。使用 TAP::Harness 编写自己的测试器也非常容易。

您到底需要做什么以及您如何尝试将其融入您的流程?

只要您使用生成 TAP(测试任何协议)输出的测试,您可能会发现这很有用: http://sourceforge.net/projects/smolder

你见过吗 闷烧?

“开发人员和测试人员使用冒烟测试聚合器来使用 Test Anything 协议上传(自动或手动)和查看冒烟/回归测试。详细信息和趋势以图表形式呈现,并通过电子邮件或 Atom 源提供通知。”

如果我理解正确的话你正在寻找 TAP::安全带

如果您正在使用 ExtUtils::MakeMaker 或者 模块::构建, ,然后您可以通过输入命令“make test”或“Build test”自动运行所有测试,这将执行项目的 t/ 子文件夹中的任何 *.t 文件。

如果您不使用其中任何一个,那么您可以使用 TAP::安全带 自动执行多个测试脚本。

要实际编写测试,请使用 测试::更多 或其他人在这里建议的任何模块。

我们必须手动运行所有测试文件进行测试

您当然希望使用 Prove (运行您的测试)和/或 Module::Build (构建您的代码,然后使用 Prove 内部使用的相同测试工具代码运行您的测试。)

你说:

“我正在寻找一个更加自动化的框架,可以进行增量测试/构建检查等”

仍然不完全确定你在追求什么。正如其他人提到的,您想要查看基于 Test::Harness/TAP 的东西。绝大多数 Perl 测试社区都使用该框架 - 因此您将通过使用该框架获得更多支持(以及有用的现有代码)。

您能多谈谈“增量测试/构建检查”的含义吗?

我猜您想将测试分成几组,以便只在某些情况下运行某些测试集?

有几种方法可以做到这一点。最简单的方法是只使用文件系统 - 分割你的测试目录,这样你就可以得到如下内容:

core/
 database.t
 infrastructure.t
style/
  percritic.t
ui/
  something.t
  something-else.t

等等...然后,您可以使用命令行“证明”工具来运行它们全部,或仅运行某些目录等。

Prove 有很多有用的选项,可以让您选择运行哪些测试以及运行顺序(例如例如最近失败的订单)。这本身可能会让你得到你所需要的。

(顺便说一句,获取最新版本的 Test::Simple/prove/etc 很重要。来自 CPAN。最近的版本有更多更多的功能)。

如果您具有 OO 思维方式,或者以前有 xUnit 框架的经验,那么您可能需要看看 Test::Class,它是一个构建在 TAP/Test::Harness 层之上的 Perl xUnit 框架。我认为它比 PerlUnit 好很多 - 但我会这么说,因为我写了它:-)

查看美味以获取有关 Test::Class 的更多信息 http://delicious.com/tag/Test::Class

如果这不是您想要的 - 您能否更详细地说明您想要什么功能?

干杯,

阿德里安

就我个人而言,我喜欢 Test::Most,它基本上是 Test::More 并添加了一些很酷的功能。

选择的测试套件框架是 测试::安全带, ,它负责控制测试运行、收集结果等。

存在各种模块来提供某些类型的测试,其中最常见的可以在 测试::简单测试::更多 (两者都包含在 Test-Simple 发行版中)。CPAN 上的整个 Test 命名空间专用于专门的单元测试模块,其中大部分设计为在 Test::Harness 下运行。

按照惯例,测试存储在项目的 t/ 目录下,每个测试文件使用文件扩展名 .t ;测试通常通过以下方式运行

 prove t/*.t

模块发行版通常包含一个名为“test”的 make 目标,该目标在安装之前运行测试套件。默认情况下,CPAN 安装过程要求在构建后通过测试,然后才能安装模块。

我会选择 Test::More,或者一般来说,任何输出的东西 轻敲

截至目前,我们使用 Test::More 但当前的问题是我们必须手动运行所有测试文件进行测试。我正在寻找的是一个更加自动化的框架,可以进行增量测试/构建检查等。

围绕 Test::More 的包装将是理想的,但任何更好、更实用的东西也可以。

我正在浏览 PerlUnit 看看是否有帮助。

您知道“证明”实用程序(来自 App::Prove)吗?您可以告诉它在给定目录中递归地运行所有测试,有或没有详细信息等。

对于 Perl 中的自动化测试,请查看 测试::安全带, ,其中包含 prove 工具。

prove 可以使用以下命令来执行该工具:

prove -r -Ilib t

这将递归测试“t/”目录中的所有 *.t 文件,同时添加 lib 到包含路径。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top