如何在Perl发行版中仅运行特定测试?

时间:2010-02-04 23:24:49

标签: perl unit-testing testing

此问题与this question I asked before有关。我有多个测试文件(A.t,B.t,C.t等),用于测试他们各自的模块A,B,C&等等。但是当我进行make测试时,它会运行所有测试。但是,当我在一个特定模块上工作时说B,我想为该模块运行单元测试。在完成我的更改后,我将运行整个套件。

那么有没有办法像make test B这样只使用B.t运行测试?当我说“make all all”之类的东西时,它会运行“t”目录下的所有测试?感谢。

2 个答案:

答案 0 :(得分:15)

我只是运行我想要运行的测试:

 % make; perl -Mblib t/B.t

你也可以用prove做同样的事情。


-Mblib加载模块blib,只需将 blib / lib (及其下的各种特殊目录)添加到@INC。它配备了Perl。 prove应该使用-b开关执行相同的操作。

我的命令实际上是两个部分:make(或Module::Build {{3}}。这构建了源代码并将Perl模块和其他文件移动到“构建库”中,或者< em> blib ,作为完整安装的中间步骤。通常./Build blib 中的版本起作用并为我刷新。因为我正在自己测试,我确保自己刷新 blib 并将其包含在Perl的模块搜索路径中。

尽管我知道这一切,但您可能会惊讶于我经常忘记执行其中一个步骤并最终针对错误的版本进行测试,无论是完全安装的旧版本(忘记make test )或旧的开发资源(忘了-Mblib)。这导致我调试语句,如:

make

答案 1 :(得分:2)

直接通过perl执行测试。 prove命令旨在简化过程,节省击键次数并缩短测试 - 调试 - 测试周期。

prove旨在一次处理多个测试,您无法通过perl进行调用。例如,你可以这样做:

prove t/*.t
prove t/     # Same as t/*.t
prove t/dev/ # Run only tests in t/dev/
prove -r t/  # Runs all .t files in t/ and any directories below.

现代prove还具有许多用于处理测试套件和修改测试的TAP输出显示方式的功能。

prove --help会显示所有prove个选项,prove --man会显示手册页。