【发布时间】:2014-01-17 03:33:32
【问题描述】:
我使用 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”创建的,因此其他所有内容都使用默认值。
【问题讨论】:
-
它不应该在.,它应该在 blib/??
-
@ysth:
@INC中没有“blib”,我编辑了问题以添加错误输出。 -
@ysth:这是
prove t的错误输出。我应该坚持使用./Build test。运行没有错误。 -
@ysth:正确运行测试,谢谢!但是使用
./Build test也会重建blib,如果它与源不同步,所以它可能是正确的方法。 -
是(如果是非构建模块,则为
make test)。但是之后可以很方便地prove --blib -v t
标签: perl