perl测试中的死亡计划

perl测试中的死亡计划,perl,unit-testing,testing,Perl,Unit Testing,Testing,有没有一种方法可以为您希望终止的Perl调用编写测试?我想验证某些调用是否会在输入格式不正确的情况下终止 sub routine_a { my $arg = shift; die if $arg eq 'FOO'; print "routine_a: $arg\n"; } sub routine_b { my $arg = shift; die if $arg eq 'BAR'; print "routine_b: $arg\n"; } sub test_a

有没有一种方法可以为您希望终止的Perl调用编写测试?我想验证某些调用是否会在输入格式不正确的情况下终止

sub routine_a {
   my $arg = shift;
   die if $arg eq 'FOO';
   print "routine_a: $arg\n";
}
sub routine_b {
   my $arg = shift;
   die if $arg eq 'BAR';
   print "routine_b: $arg\n";
}

sub test_all {
   assert( routine_a("blah") );
   assert( routine_b("blab") );
   assert_death( routine_a("FOO") );
   assert_death( routine_b("BAR") );
}
见:


将测试包装在
eval{…}
块中,并检查是否设置了
$@

eval { test_thats_supposed_to_fail() };
ok( $@ , "test failed like it was supposed to" );

我发现它比Test::Exception更容易使用,正如我在中所说的。最好您的测试应该与预期的消息一起结束,这样您就可以检查$@的值,而不仅仅是测试它的存在。
eval { test_thats_supposed_to_fail() };
ok( $@ , "test failed like it was supposed to" );