我使用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”创建的,因此使用其他所有内容的默认值。
答案 0 :(得分:0)
当模块使用Module :: Starter创建时,它依赖于MakeMaker(或Module :: Build),然后所有构建和测试都应该通过提供的Makefile(或Build文件,如果使用Module ::)完成建立)。即,make && make test
或./Build && ./Build test
。