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