Perl 如何对if";进行单元测试&引用;不在@INC上吗?

Perl 如何对if";进行单元测试&引用;不在@INC上吗?,perl,Perl,我使用Module::Starter创建模块的框架,它创建的一个测试文件(“t/00 load.t”)如下所示: #!perl-T 使用5.006; 严格使用; 使用警告致命=>“全部”; 计划测试=>1; 开始{ 使用_ok('My::Module')| |打印“纾困!\n”; } 但是当我运行make&&maketest时,此测试失败,因为打开污染模式(“perl-T”)会从@INC中删除“.”,因此找不到My::Module。一般来说,我可以看到启用污染检查的价值,但是我应该如何测试这段

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

#!perl-T
使用5.006;
严格使用;
使用警告致命=>“全部”;
计划测试=>1;
开始{
使用_ok('My::Module')| |打印“纾困!\n”;
}
但是当我运行
make&&maketest
时,此测试失败,因为打开污染模式(“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.

这是在Perl5.16.1上,模块::Starter 1.62和ExtUtils::MakeMaker 6.86。框架是使用“module starter--module=My::module”创建的,因此对其他所有内容都使用默认值。

当使用module::starter创建模块时,模块反过来依赖于MakeMaker(或module::Build),那么所有的构建和测试都应该通过提供的Makefile(或构建文件,如果使用module::Build)。也就是说,使用
make&&make test
/Build&&Build test

它不应该向内看,应该在blib/?下看?@ysth:INC中没有“blib”,我编辑了问题以添加错误输出。@ysth:这是
prove t
的错误输出。我应该坚持使用
/buildtest
。运行时没有错误。@ysth:正确运行测试,谢谢!但是如果与源代码不同步,使用
/Build test
也将重建
blib
,因此这可能是正确的方法。是(或者如果是非构建模块,则使用
make test
)。但是之后可以方便地
证明--blib-vt