2008-09-08 32 views

回答

23

这实际上取决于你想要做什么,但这里有很多背景。

首先,你一般会写与测试你的测试程序::更多或Test ::简单为核心的测试程序:

use Test::More tests => 2; 

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

内部,测试::生成器被称为输出的测试结果TAP(Test Anything Protocol)。 Test :: Harness(TAP :: Harness周围的薄包装)读取并解释TAP,告诉您测试是否通过。上面提到的“证明”工具与Test :: Harness捆绑在一起,所以假设将上面的t /目录(标准的Perl测试目录)保存为“数字”。T”,那么你可以用这个命令来运行它:

prove --verbose t/numbers.t 

或者在该目录中运行所有测试(递归,假设你要访问子目录):

prove --verbose -r t/ 

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

作为一个侧面说明,不要用TestUnit。许多人推荐它,但它是一个很久以前抛弃,不与现代测试工具集成。

0

我会去测试::更多,或在一般情况下,任何输出TAP

0

截至目前,我们使用测试::更多,但目前的问题是,我们必须手动运行所有测试文件供测试用。我正在寻找的是更多的自动化框架,可以做增量测试/内部检查等。

Test ::更多的包装将是理想的,但任何更好,更实用也可以。

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

+1

请不要使用PerlUnit。它被遗弃了。如果您必须具有xUnit样式框架,请参见Test::Class。它被积极维护并与Perl的标准测试框架集成。 – Ovid 2008-09-16 11:44:18

2

如果您使用ExtUtils::MakeMakerModule::Build,那么你可以运行所有测试自动通过输入命令“做试验”或“生成测试”,这将在您的项目的t /子文件夹中执行任何* .t文件。

如果您不使用其中之一,那么您可以使用TAP::Harness来自动执行多个测试脚本。

要实际编写测试,请使用Test::More或其他人在此处提出的任何模块。

0

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

1

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

9

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

你到底需要做什么以及如何将它融入到你的过程中?

2

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

你一定要使用证明(运行测试)和/或模块::生成(建立你的代码,然后运行使用你的测试相同的测试用具代码,其证明在内部使用。)

0

对于perl中的自动化测试,请看Test::Harness,其中包含prove工具。

prove工具可以用下面的命令被执行:

prove -r -Ilib t 

这将recursivly测试所有* .T文件在“吨/”目录,同时加入lib到包括路径。

+0

-l是-Ilib的缩写 - – Schwern 2008-10-18 07:09:41

1

选择的测试套件框架是Test::Harness,这需要控制测试运行,收集结果的护理等

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

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

通常运行
prove t/*.t 

模块分布通常包括命名为“测试”一个make目标运行安装前测试套件。默认情况下,CPAN安装过程要求在安装模块之前测试通过。

5

你见过smolder

“开发人员和测试人员使用Smoke Test Aggregator上传(自动或手动)并使用Test Anything Protocol查看烟雾/回归测试,并通过电子邮件或Atom feeds提供详细信息和趋势图。

+0

这很好,但Smolder似乎没有正确解析TAP存档。 – 2013-01-25 16:06:08

2

你说:

“我所寻找的是一个更加自动化框架,它可以做增量测试/构建支票等”

还没完全确定你以后。正如其他人所提到的,你想看看基于Test :: Harness/TAP的事情。绝大多数Perl测试社区都使用这个框架 - 所以你可以通过使用它来获得更多的支持(以及有用的现有代码)。

你可以多谈一谈“增量测试/构建检查”的含义吗?

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

有几种方法可以做到这一点。最简单的是只使用文件系统 - 分裂测试的目录,所以你有喜欢的东西:

 

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

等等......那么你可以使用命令行“证明”工具来运行它们所有,或只有某些目录等。

证明有很多有用的选项,让您选择哪些测试运行和以哪种顺序(例如最近最近失败的顺序)。这一切 - 本身 - 可能会让你走向你所需要的。 (从CPAN获得Test :: Simple/prove/etc的最新版本很重要,最近的版本有更多的功能)。

如果您是面向对象思维的人,或者有过xUnit框架的经验,那么您可能需要查看Test :: Class,它是一个构建在TAP/Test之上的Perl xUnit框架: :线束层。我认为这是比PerlUnit好了不少 - 但我要说的是,因为我写的:-)

退房美味对测试::类http://delicious.com/tag/Test::Class

一些更多的信息。如果这不是你之后 - 你可以详细了解你想要的功能吗?

干杯,

阿德里安