如何“单位测试”。不在@INC上?

时间:2014-01-16 00:34:05

标签: perl

我使用Module :: Starter创建模块的骨架,它创建的测试文件之一(“t / 00-load.t”)如下所示:

#!perl -T
use 5.006;
use strict;
use warnings FATAL => 'all';

plan tests => 1;

BEGIN {
  use_ok( 'My::Module' ) || print "Bail out!\n";
}

但是当我运行make && make test时,此测试失败,因为打开污点模式(“perl -T”)会删除“。”来自@INC,因此找不到My::Module。我可以看到一般打开污点检查的价值,但我该如何测试这段代码呢?这是输出的错误消息:

#   Failed test 'use My::Module;'
#   at t/00-load.t line 10.
#     Tried to use 'My::Module'.
#     Error:  Can't locate My/Module.pm in @INC (@INC contains:
#     /Library/Perl/5.16/darwin-thread-multi-2level
#     /Library/Perl/5.16
#     /Network/Library/Perl/5.16/darwin-thread-multi-2level
#     /Network/Library/Perl/5.16
#     /Library/Perl/Updates/5.16.2/darwin-thread-multi-2level
#     /Library/Perl/Updates/5.16.2
#     /System/Library/Perl/5.16/darwin-thread-multi-2level
#     /System/Library/Perl/5.16
#     /System/Library/Perl/Extras/5.16/darwin-thread-multi-2level
#     /System/Library/Perl/Extras/5.16) at (eval 4) line 2.
# BEGIN failed--compilation aborted at (eval 4) line 2.

这是在perl 5.16.1上,包含Module :: Starter 1.62和ExtUtils :: MakeMaker 6.86。骨架是使用“module-starter --module = My :: Module”创建的,因此使用其他所有内容的默认值。

1 个答案:

答案 0 :(得分:0)

当模块使用Module :: Starter创建时,它依赖于MakeMaker(或Module :: Build),然后所有构建和测试都应该通过提供的Makefile(或Build文件,如果使用Module ::)完成建立)。即,make && make test./Build && ./Build test