有没有适用于Perl的好的自动化测试套件?

9
有人能推荐一些适用于Perl的好的自动化测试套件框架吗?
14个回答

24

这取决于你想做什么,但以下是某些相关背景信息。

首先,你通常会使用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

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

prove --verbose -r t/

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

另外注意,不要使用TestUnit。虽然很多人推荐它,但它已经被放弃很久了,也不能与现代测试工具集成。


9
请查看CPAN测试者,这里有许多自动化测试工具。大部分都可以在CPAN上找到,因此您可以根据自己的需要进行修改。使用TAP::Harness编写自己的测试程序也非常容易。
您究竟需要做什么,以及如何将其融入您的流程中?

5

5

你见过smolder吗?

"Smoke Test Aggregator是开发人员和测试人员使用的工具,可以通过Test Anything Protocol上传(自动或手动)和查看烟雾/回归测试。详细信息和趋势以图形方式呈现,并通过电子邮件或Atom订阅提供通知。"


这很好,但是Smolder似乎不能正确解析TAP存档了。 - Erik Aronesty

2

2
如果你正在使用ExtUtils::MakeMakerModule::Build,那么你可以通过输入命令"make test"或 "Build test"来自动运行项目t/子文件夹中的任何*.t文件。
如果你没有使用这两个工具,那么你可以使用TAP::Harness来自动执行多个测试脚本。
要编写测试,可以使用Test::More或其他人在此处提出的模块。

2

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

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


2
你说:
“我正在寻找的是更多的自动化框架,可以进行增量测试/构建检查等。”
我还不完全确定你想要什么。正如其他人所提到的,您需要查看基于Test::Harness/TAP的工具。绝大多数Perl测试社区都使用该框架,因此使用它将获得更多支持(和有用的现有代码)。
您能否再详细说明一下“增量测试/构建检查”的含义?
我猜您想将测试分成组,以便在某些情况下只运行某些测试集?
有几种方法可以做到这一点。最简单的方法是使用文件系统-拆分测试目录,例如:
核心/ 数据库.t 基础设施.t 样式/ percritic.t 用户界面/ something.t something-else.t
等等…然后,您可以使用命令行“prove”工具运行所有测试,或仅运行某些目录等。 prove有很多有用的选项,可以让您选择运行哪些测试以及以哪种顺序运行(例如最近失败的顺序之类的)。仅这一点就可能让您达到所需的目的。
(顺便说一句,从CPAN获取Test::Simple/prove等的最新版本非常重要。最新版本具有更多功能)。
如果您有面向对象的思维方式,或者有先前的xUnit框架经验,那么您可能想看看Test::Class,它是一个Perl xUnit框架,构建在TAP/Test::Harness层之上。我认为它比PerlUnit好得多-但这是因为我编写了它:-)
请查看delicious以获取有关Test::Class的更多信息http://delicious.com/tag/Test::Class
如果这不是您想要的功能,请详细说明您需要什么功能?
谢谢,
Adrian

1

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

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

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

 prove t/*.t

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


1

个人而言,我喜欢Test::Most,它基本上是带有一些酷炫功能的Test::More。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接