有人可以为Perl建议一些好的自动化测试套件框架吗?
答案 0 :(得分: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 Anything Protocol)。 Test :: Harness(TAP :: Harness周围的薄包装),读取并解释TAP,告诉您测试是通过还是失败。上面提到的“证明”工具与Test :: Harness捆绑在一起,所以假设将上面的t /目录(标准的Perl测试目录)保存为“numbers.t”,然后你可以用这个命令运行它:
prove --verbose t/numbers.t
或者在该目录中运行所有测试(递归地,假设您想要进入子目录):
prove --verbose -r t/
( - 详细,当然,是可选的)。
作为旁注,请勿使用TestUnit。许多人推荐它,但它很久以前就被抛弃了,并没有与现代测试工具集成。
答案 1 :(得分:9)
查看CPAN Testers,其中包含大量自动化测试工具。其中大部分都应该在CPAN上,这样您就可以对其进行修改以满足您的需求。使用TAP :: Harness编写自己的测试人员也非常容易。
您究竟需要做什么以及如何将其融入您的流程?
答案 2 :(得分:5)
只要您使用生成TAP(测试任何协议)输出的测试,您可能会发现这很有用:http://sourceforge.net/projects/smolder
答案 3 :(得分:5)
你见过smolder吗?
“Smoke Test Aggregator,供开发人员和测试人员使用Test Anything Protocol上传(自动或手动)和查看烟雾/回归测试。详细信息和趋势图表以及通过电子邮件或Atom供稿提供的通知。”
答案 4 :(得分:2)
如果我理解正确您正在寻找TAP::Harness
答案 5 :(得分:2)
如果您正在使用ExtUtils::MakeMaker或Module::Build,则可以通过输入命令“make test”或“Build test”自动运行所有测试,该命令将执行任何* .t文件在项目的t /子文件夹中。
如果您没有使用其中任何一个,那么您可以使用TAP::Harness自动执行多个测试脚本。
要实际编写测试,请使用Test::More或其他人在此处建议的任何模块。
答案 6 :(得分:2)
我们必须运行所有测试文件 手动进行测试
您当然希望使用prove(运行测试)和/或Module :: Build(构建您的代码,然后使用相同的测试工具代码运行您的测试,这些代码证明在内部使用。)
答案 7 :(得分:2)
你说:
“我正在寻找的是更多自动化框架,可以进行增量测试/构建检查等”
仍然不完全确定你在追求什么。正如其他人所提到的,你想看看基于Test :: Harness / TAP的东西。绝大多数Perl测试社区都使用该框架 - 因此您可以使用该框架获得更多支持(以及有用的现有代码)。
您能谈谈“增量测试/构建检查”的含义吗?
我猜你想把你的测试分成几组,以便你在某些情况下只运行某些测试?
有几种方法可以做到这一点。最简单的方法就是使用文件系统 - 拆分测试目录,这样就可以了:
core/ database.t infrastructure.t style/ percritic.t ui/ something.t something-else.t
等等......然后你可以使用命令行“prove”工具来运行它们,或只运行某些目录等。
证明有很多有用的选项,可让您选择运行哪些测试以及以哪种顺序运行(例如最近最近失败的订单)。这一切 - 它本身 - 可能会让你走向你所需要的。
(顺便说一句,从CPAN获取最新版本的Test :: Simple / prove / etc.是很重要的。最新版本有更多,更多的功能)。
如果你是一个OO思维模式,或者以前有过xUnit框架的经验,那么你可能想看看Test :: Class,它是一个构建在TAP / Test之上的Perl xUnit框架::线束层。我认为它比PerlUnit好很多 - 但我会说,因为我写了它: - )
查看有关Test :: Class http://delicious.com/tag/Test::Class
的更多信息的美味如果这不是您想要的 - 您能否详细了解您想要的功能?
干杯,
阿德里安
答案 8 :(得分:1)
就我个人而言,我喜欢Test :: Most,它基本上是Test :: More,还有一些很酷的功能。
答案 9 :(得分:1)
选择的测试套件框架是Test::Harness,它负责控制测试运行,收集结果等。
存在各种模块以提供某些类型的测试,其中最常见的可以在Test::Simple和Test::More中找到(两者都包含在Test-Simple发行版中)。 CPAN上的整个Test命名空间专用于专门的单元测试模块,其中大部分都设计为在Test :: Harness下运行。
按照惯例,测试存储在项目的t /目录中,每个测试文件使用文件扩展名.t;测试通常通过
运行 prove t/*.t
模块发行版通常包括名为“test”的make目标,该目标在安装之前运行测试套件。默认情况下,CPAN安装过程要求在构建模块之前测试通过。
答案 10 :(得分:0)
我会选择Test :: More,或者一般来说,输出TAP
的任何内容答案 11 :(得分:0)
截至目前,我们使用Test :: More,但目前的问题是我们必须手动运行所有测试文件进行测试。我正在寻找的是更多自动化框架,可以进行增量测试/构建检查等。
Test :: More的包装将是理想的,但任何更好,更实用的东西也会很好。
我正在通过PerlUnit看看是否有帮助。
答案 12 :(得分:0)
您是否了解'prov'实用程序(来自App :: Prove)?您可以告诉它在给定目录中递归地运行所有测试,有或没有详细程度等。
答案 13 :(得分:0)
要在perl中进行自动化测试,请查看Test::Harness,其中包含prove
工具。
可以使用以下命令执行prove
工具:
prove -r -Ilib t
这将递归测试't /'目录中的所有* .t文件,同时将lib
添加到包含路径。