我不知道如何让ExtUtils::MakeMaker提示用户是否希望在/t中运行需要实时连接的测试子集。这个是可能的吗?
发布于 2014-03-24 14:14:32
通常,您不希望在最终用户的系统上运行这样的测试。你不能指望它是可靠的,即使它是存在的。但是,如果您真的想这样做,您可以使用提示助手函数和测试节参数来实现这一点,如果您将网络测试放在它自己的目录中:
use ExtUtils::MakeMaker;
…
my $network = prompt("Do you want to run tests requiring network access [y/n]", "n") =~ /y/i;
WriteMakefile(
...
test => {
TESTS => $network ? 't/*.t t/network/*.t' : 't/*.t'
}
);发布于 2014-03-24 14:02:49
我记得在野外看到的一种方法是在默认情况下跳过这些测试,但是打印信息,告诉用户如果应该执行测试,应该设置一个特定的环境变量。
因为测试只是perl代码,所以您可以询问那里的用户并跳过相应的测试。
#!/usr/bin/env perl
use strict;
use warnings;
use feature qw/ say /;
use Term::ReadKey;
use Test::More;
say "Do you want to run tests with live internet connectivity? [y/n]";
my $key = <>;
ok(1, 'first test');
SKIP: {
skip('you said you dont want to run these', 1) if $key ne 'y';
ok(1, 'second test, skippable');
}
ok(1, 'third test');
done_testing;https://stackoverflow.com/questions/22608943
复制相似问题