2009-12-07 80 views
1

我有一個Test::More測試腳本,用於我們製作的模塊。當它自己運行測試腳本時,它就像預期的那樣工作。 由於我們需要運行幾個測試,我製作了一個運行所有腳本的文件Test::Harness。但是,從Test::Harnessruntests執行時,該腳本會返回錯誤。當我使用Test :: Harness :: runtests運行它們時,爲什麼我的Perl模塊測試失敗?

在調試過程中,我試圖通過使用backtics運行腳本,並且工作。所以runtest命令導致了錯誤。

線束的代碼是非常簡單的:

(perl) -w 
use strict; 
use warnings; 
use Test::Harness; 

my @tests = ('test1.pl', 'test2.pl', 'test3.pl'); 
runtests(@tests); 

的錯誤,從我們使用CPAN模塊,Pod::HtmlEasy起源。

我希望的解決方案是運行Test::Harness而不會出現錯誤。

從測試的輸出:

 
test1..........False [] range "\w-" in regex; marked by line 20. 
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 422, line 20. 
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 363, line 22. 
False [] range "\w-" in regex; marked by line 22. 
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 488, line 24. 
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 363, line 26. 
close() on unopened filehandle PODIN at /app/perl/lib/Pod/HtmlEasy.pm line 248. 
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 318. 
(...) 
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 396. 
test1..........ok 2/3close() on unopened filehandle PODIN at /app/perl/lib/Pod/HtmlEasy.pm line 248. 
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 318. 
(...) 
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 396. 
test1..........ok              
+2

您是否嘗試更新Pod :: HtmlEasy?看來正則表達式現在看起來有所不同,Changes文件表示最新版本有一個修復「克服看似隨機的CPAN測試失敗」。 – innaM 2009-12-07 10:03:06

+0

@曼尼;謝謝,這似乎是一種前進的方式。我們使用的是原始開發人員的最新版本,從2004年開始爲0.07。 使用最新版本的確引入了一些其他問題,但我們需要解決這些問題...就像一些非向後兼容的更改。前進一步,退一步。 :) 無論如何,謝謝。 – Fredrik 2009-12-07 10:51:22

回答

2

您粘貼的輸出顯示你的測試通過。輸出的消息是警告。如果在運行perl test1.pl時沒有收到警告,那是因爲您(或您使用的模塊)未啓用警告。顯然,Test :: Harness會用-w標誌調用perl,並且會得到警告,因爲-w會在全局中啓用警告。 (「使用警告」只能讓他們在所說的「使用警告」的詞彙範圍內。)

+0

不錯,我錯過了那一個。將-w添加到測試腳本中給出了完全相同的日誌。至少這意味着test :: harness不會引入一些錯誤。 – Fredrik 2009-12-08 13:05:28

3

你爲什麼要創建自己的測試腳本?只需將您的模塊放入標準分發設置並從構建腳本運行即可。此外,你可以使用prove來做你正在做的事情。

5

爲什麼不直接讓Test :: Harness從命令行構建一個測試環境?

prove test*.pl 

或者,如果你把你的測試中t/目錄爲標準:

prove -r t/ 
+0

謝謝!證明工作正常。此時測試基礎設施依賴於一個test :: harness文件,該文件列出了所有的測試腳本,但我們正在計劃一個解決方案,所以我會提出這個建議。 – Fredrik 2009-12-08 13:08:45

+1

這聽起來像你想要我的Test :: Manifest如果你想列出測試運行。 – 2009-12-11 20:03:07

相關問題