有什么好的Perl自动测试套件吗?

有什么好的Perl自动测试套件吗?,perl,testing,frameworks,Perl,Testing,Frameworks,有人能为Perl推荐一些好的自动化测试套件框架吗?我会选择test::More,或者一般来说,任何输出的东西。到目前为止,我们使用test::More,但当前的问题是我们必须手动运行所有测试文件进行测试。我正在寻找的是一个更自动化的框架,它可以进行增量测试/构建检查等 一个围绕Test::More的包装器将是理想的,但任何更好、更实用的东西也都可以 我正在浏览PerlUnit,看看这是否有帮助。如果我理解正确,您正在查找如果您正在使用or,那么您可以通过输入命令“make test”或“Buil

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

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

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

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


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

如果我理解正确,您正在查找

如果您正在使用or,那么您可以通过输入命令“make test”或“Build test”自动运行所有测试,该命令将执行项目t/子文件夹中的所有*.t文件

如果您没有使用这两个脚本中的任何一个,那么您可以使用来自动执行多个测试脚本


要实际编写测试,请使用或使用其他人在此处建议的任何模块。

您知道“证明”实用程序(来自App::prove)吗?您可以告诉它在给定的目录中递归运行所有测试,无论是否详细,等等。

我个人喜欢Test::Most,它基本上是Test::More,并添加了一些很酷的特性。

只要您使用生成TAP(Test Anything Protocol)输出的测试,您可能会发现这很有用:

请检查,有很多自动化测试的工具。其中大部分应该在CPAN上,这样您就可以修改它以满足您的需要。使用TAP::Harness编写自己的测试仪也非常容易


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

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

首先,您通常会使用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,告诉您测试通过还是失败。上面提到的“prove”工具与Test::Harness捆绑在一起,因此假设将上述内容保存在t/目录(标准Perl测试目录)中为“numbers.t”,然后可以使用以下命令运行它:

prove --verbose t/numbers.t
或者运行该目录中的所有测试(递归地,假设您想进入子目录):

(-verbose当然是可选的)

请注意,不要使用TestUnit。许多人推荐它,但它在很久以前就被放弃了,并且没有与现代测试工具集成

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


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

对于perl中的自动测试,请看一看,其中包含
prove
工具

prove
工具可通过以下命令执行:

prove -r -Ilib t

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

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

存在各种模块来提供某些类型的测试,其中最常见的模块可以在和中找到(两者都包含在测试简单分布中)。CPAN上的整个测试名称空间专用于专门的单元测试模块,其中大多数模块设计为在Test::Harnese下运行

按照惯例,测试存储在项目的t/目录中,每个测试文件都使用文件扩展名.t;测试通常通过

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

您看到了吗

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

您说:

“我想要的是一个更自动化的框架,它可以进行增量测试/构建检查等”

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

你能再多谈一点你所说的“增量测试/构建检查”是什么意思吗

我猜您希望将测试分成若干组,以便在特定情况下只运行特定的测试集

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

core/ database.t infrastructure.t style/ percritic.t ui/ something.t something-else.t 核心/ 数据库.t 基础设施 风格/ percritic.t 用户界面/ 什么东西 还有别的吗 等等。。。然后,您可以使用命令行“prove”工具来运行它们,或者只运行某些目录,等等

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

(顺便说一句,从CPAN获得最新版本的Test::Simple/prove/等非常重要。最新版本的功能多得多)

如果您有OO思维,或者之前有过xUnit框架的经验,那么您可能想看看Test::Class,它是一个构建在TAP/Test::Harnese层之上的Perl xUnit框架。我认为它比PerlUnit好得多,但我会说,因为我写了 core/ database.t infrastructure.t style/ percritic.t ui/ something.t something-else.t