2014-09-01 121 views
0

我目前正致力於在Project Euler拼圖中實現構建庫。我已經到了構建測試的階段,但是在某個時候我的測試失敗了。一切都可以導入,但是一旦我測試了一個子程序的存在,我新創建的測試就失敗了。我最初啓動了Test :: More,但是爲了簡化我切換到Test :: Simple的事情。每次運行後,即使簡化爲不太複雜的測試功能,我也會得到相同的錯誤輸出。我的代碼中是否存在一些我忽略的錯誤,或者我的系統或環境的某些方面會影響到這一點?構建模塊時測試失敗

注意:除了Test :: Simple和Test :: More文檔外,我還瀏覽了幾次Test :: Tutorial。我還確保查看相關函數的Perl文檔(已定義和存在)。在Ubuntu 14.04上使用Perl 5.18.2。

下面是輸出:面向

t/00-load.t ....... 1/? # Testing EulerUtils 0.01, Perl 5.018002, /usr/bin/perl 
    t/00-load.t ....... ok 
    t/Qual.t .......... 1/2 
    # Failed test 'isEven() exists' 
    # at t/Qual.t line 8. 
    # Looks like you failed 1 test of 2. 
    t/Qual.t .......... Dubious, test returned 1 (wstat 256, 0x100) 
    Failed 1/2 subtests 
    t/boilerplate.t ... ok 
    t/manifest.t ...... skipped: Author tests not required for installation 
    t/pod-coverage.t .. ok 
    t/pod.t ........... ok 

    Test Summary Report 
    ------------------- 
    t/Qual.t  (Wstat: 256 Tests: 2 Failed: 1) 
     Failed test: 2 
     Non-zero exit status: 1 
    Files=6, Tests=10, 0 wallclock secs (0.06 usr 0.01 sys + 0.23 cusr 0.04 csys = 0.34  CPU) 
    Result: FAIL 
    Failed 1/6 test programs. 1/10 subtests failed. 

沒有對象,順便......至少到目前爲止是這樣。我也做了一個虛擬測試,這解釋了2個子測試。

測試本身(更新使圖書館位置明確):

use v5.18.2; 
use strict; 
use warnings; 
use diagnostics; 
use FindBin; 

use lib "$FindBin::Bin/../lib"; 
use Test::Simple tests => 1; 

use Qual; 
ok(defined(&isEven), 'isEven() exists'); 

從模塊本身,與模塊啓動製成的子程序:

... 
sub isEven { 
     my $n = shift; 
     return 1 if ($n % 2 == 0); 
} 
... 

讓我知道如果有什麼東西需要。

+2

Qual.pm的頂部怎麼樣?它實際上是出口嗎? (如果你不知道這意味着什麼,你應該閱讀http://p3rl.org/Exporter) – ysth 2014-09-02 00:14:15

+0

是的,我知道這意味着什麼......就是這樣。 -_- – Eugene 2014-09-02 15:18:51

回答

0

如果該測試失敗,您顯然不會從Qual導出isEven。假設你使用的出口商,如果是在@EXPORT_OK,你需要明確要求它在Qual.t:

use Qual 'isEven'; 

或將其移動到@EXPORT(雖然現在它建議沒有默認導出) 。

相關問題