2011-05-20 31 views
5

Module::Starter初始化一個項目時,它會創建一個名爲manifest.t的測試。Module :: Starter的manifest.t中預期的開發過程是什麼?

#!perl -T 

use strict; 
use warnings; 
use Test::More; 

unless ($ENV{RELEASE_TESTING}) { 
    plan(skip_all => "Author tests not required for installation"); 
} 

eval "use Test::CheckManifest 0.9"; 
plan skip_all => "Test::CheckManifest 0.9 required" if [email protected]; 
ok_manifest(); 

當你與Build test運行測試,下面是輸出的一部分:

t\00-load.t ....... ok 
t\boilerplate.t ... ok 
t\manifest.t ...... skipped: Author tests not required for installation 

我理解的狹義的結果($ENV{RELEASE_TESTING}沒有設置,所以測試被跳過),但我不完全把握大局。什麼是預期的開發過程?我認爲運行測試以確認模塊的清單是準確的是一個好主意。我應該設置該環境變量嗎?如果是這樣,在開發過程中的什麼時候?

回答

4

許多模塊分佈的測試不檢查代碼是否正常工作,而是檢查分佈是否處於適當的釋放狀態。比如MANIFEST是最新的,是否所有的功能都被記錄在POD中,等等。

爲了節省時間,除非設置了RELEASE_TESTING環境變量,否則這些測試可能會寫入跳過它們自身。這是一個非正式的標準。這樣,當人們安裝模塊時,這些測試不會運行,也不會在作者僅檢查代碼更改是否破壞任何內容時運行。

在發佈dist之前,您應該運行RELEASE_TESTING=1 make test(或Build等效)。如果您使用Dist::Zilla(我強烈建議),您可以使用dzil test --release運行發佈測試。該標誌也由TestRelease plugin自動設置,如果您使用dzil,您應該使用該標誌。

其他常用於控制測試的環境變量是AUTOMATED_TESTING和AUTHOR_TESTING。 AUTOMATED_TESTING由CPAN testers設置,運行自動煙霧測試。

+0

感謝您的明確解釋,以及嘗試Dist :: Zilla的建議。 – FMc 2011-05-20 15:34:56

相關問題