《perl进阶(第2版)涵盖Perl 5.14(1).docx》由会员分享,可在线阅读,更多相关《perl进阶(第2版)涵盖Perl 5.14(1).docx(5页珍藏版)》请在第一文库网上搜索。
1、既然在模块中有一个新的子例程,我们就应该测试它。这是一个简单的测试,我们放入到t/sum.1测试文件中。我们测试到我们可以加载模块并且还定义了子例程。这将是十分烦人的工作一一不断修改代码最后才发现是子例程名出错(尽管我们不愿意承认,这种事情发生的频率还是很高)。在这之后,测试数字1Io的和。这就是一个有着良好的输入以及期望的良好输出的测试。我们也在Weirdist中测试了坏的输入,在该输入列表中没有任何数字。接下来会发生什么?USeTest:Moretests=4;useok(Acme:GI11ICAN:Uti1s,);ok(defined&Acme:GI11IGAN:Uti1s:sum,su
2、m()isdefined,);mygood_1ist=110;is(Acme:GI11IGAN:Uti1s:sum(good_1ist),55Thesumof1to10is55,);myWeird1iSt=qw(abc123123abc);is(AcmeuGI11IGANnUti1s:sum(WeirdJ1ist),129,Theweirdsumis128);%./Bui1dtestt/OO-1oad-toktboi1erp1ate.toktmaniizest5;useTest:NoWarnings;use_ok(,Acme:GI11ICAN:rUti1s,);ok(defined&Acme:
3、GI11IGAN:sum9,sum()isdefined,);mygood_1ist=1.10;is(Acme:GI11IGAN:11ti1s:sum(Sgood1ist),55,Thesumof1to10is55,);myQWeirdIiSt=qw(abc123123abc);is(Acme:GI111GAN:Uti15::SUn(Sweird1ist),129,Theweirdsumis128);现在,当我们运行这些测试时,似乎没有什么错误:%./Bui1dtestt-1oadokt/boi1erp1ate.tOktmanifesttskipped:Authortestsnotrequir
4、edtod-coveragetokt/pod.toktsumokA11testssuccessfu1.Fi1es=6,Tests=Ii,0wa11c1ockSeCS(.)Resu1t:PASS%Bui1dmanifestAddedtoMANIFEST:t/sum.t一切正常。此时是时候把它上传到PAUSE了。我们更新清单,把其列入t/sunt文件中:我们测试了发布版,并且当其通过时,我们创建存档:%Bui1ddisttest%Bui1ddist现在准备上传。我们登录PAUSE账户,并且单击链接“Up1oadafi1etoCPAN”在那里,我们按照指示并发布代码。不到一个小时,甚至更可能在更短的
5、时间内,我们应该能够在网站httpswww.metacpan.org上发现我们新的发布版。如果这是你第一个CPAN发布版,恭喜你!练习4对于这个练习,我们将破坏我们的发布版。首先,我们更新1ib/Acme/GI11IGAN/Uti1s.pm中的版本号,这样我们就可以上传和索引一个新的发布版存档:our$VERS1ON=,0.02;我们要通过添加一个由他人控制的名称空间来破坏我们的发布版。我们建议使用由BDFOY(本书的一个作者,可以使用)控制的Tie:CyC1e。添加一个模块:%modu1e-starter-modu1e=Tie:Cyde现在我们有一个1ibTieCyc1e.pm文件。尽管mo
6、du1e-starter已经自动更新了MANIFEST,但是我们可以再次确认:%/Bui1dmanifest在那里,我们像之前做的一样创建了一个新的存档:%Bui1ddisttest%Bui1ddist我们上传文件到PAUSE。当PAUSE试图索引新存档时,它将会在Tie:CyC1e上失败。我们的模块将仍然进入到CPAN中,但是它将不会被索引,而且PAUSE将发送给我们一封电子邮件来解释到底是哪里出错了。练习5这个练习是另一种类型的失败,但是这一次出错的原因与CPANTeSter有关。如果1ib/Tie/Cyc1e.pm文件仍然存在,那么我们需要删除它。我们更改代码,把sun中的代码替换成乘法
7、运算:subsummy$5um;foreach(_)$sum*=$_return我们希望测试失败,而且我们应当确保它们确实失败:%./Bui1dtest我们不会告诉你失败的输出是什么。我们建立一个新的归档文件并把其上传到PAUSEo当我们的发布版进入CPAN时;CPANTester志愿者将开始下载和测试它。在它失败以后,我们应该会收到一封关于错误的电子邮件。练习6当我们查看在MetaCPAN中的发布页面时,我们应该看到Tester的结果。查看CPANdeps,我们也应该看到一个表明我们有一个版本通过了一个版本没有通过的矩阵式报表。在此处没有太多关于此练习的答案。详细相关内容可以通过登录网站https:WWw.metacpan.org找到我们的page.Exp1ore来获得。你也可以在该页面中寻找你喜欢的其他模块。练习7我们应该可以使用CPAN客户端来安装我们在CPAN的发布版:%cpan-IAcme:GI11IGAN:Uti1s如果我们按照这些例子中的程序,我们停止了一个失败的发布版。此时我们应该修复这个发布版,重新上传并稍后再次尝试。在成功地安装了这个模块之后,我们已经完成了整个流程。再次恭喜你!1这其实是很重要的,正如我们在http:WwW.perIBenchmarking”章节。