在Perl测试文件中仅运行一个命名的测试用例

时间:2017-04-19 17:48:01

标签: perl unit-testing testing

我试图找到是否可以在Perl测试文件中只运行一个测试用例。例如,请考虑以下Perl测试文件(从http://www.thegeekstuff.com/2013/02/perl-test-simple/复制):

#!/usr/bin/perl

use strict;
use warnings;

use Test::Simple tests => 2;

sub hello_world
{
return "Hello world!";
}

sub get_number
{
return int(rand(1000));
}
ok( hello_world( ) eq "Hello world!", "My Testcase 1" );
ok( get_number( ) > 0, "My Testcase 2" );

当我使用命令prove -v test.t运行此文件时,我得到以下输出:

test.t .. 
1..2
ok 1 - My Testcase 1
ok 2 - My Testcase 2
ok

现在,我只想运行第二个测试用例,即My Testcase2。有没有办法在测试文件中只执行一个命名的测试用例?

1 个答案:

答案 0 :(得分:5)

简短的回答是:不,使用Test::Simple(或Test::More)和prove命令提供的简单测试框架,无法从一个特定的断言中挑出一个特定的断言测试脚本并运行该断言。

然而,Perl测试生态系统提供了丰富多样的选项。例如,Test::Class允许您在标准测试协议之上添加面向对象的层。这允许您将测试分组为方法,添加设置和拆卸方法,以及run individual test methods。您仍然无法在不修改测试脚本的情况下从命令行完成所有操作,但它更接近您要求的内容。

当然,更简单的解决方案是将您想要的位复制到自己的.t文件中并运行它。