本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
測試的最佳實務
使用 CodeCatalyst 提供的測試功能時,建議您遵循這些最佳實務。
自動探索
在 CodeCatalyst 中設定動作時,自動探索可讓您自動探索各種工具的輸出,例如 JUnit 測試報告,並從中產生相關的 CodeCatalyst 報告。自動探索有助於確保即使已探索輸出的名稱或路徑變更,報告仍會持續產生。新增檔案時,CodeCatalyst 會自動探索檔案並產生相關報告。不過,如果您使用自動探索,請務必考量此功能的下列部分層面:
-
當您在動作中啟用自動探索時,所有自動探索到的相同類型報告都會共用相同的成功條件。例如,共用條件,例如最低通過率,將適用於所有自動探索的測試報告。如果您需要相同類型的報告不同條件,則必須明確設定每個報告。
-
自動探索也可以找到您的相依性產生的報告,如果設定成功條件,則這些報告上的 動作可能會失敗。此問題可以透過更新排除路徑組態來解決。
-
自動探索不保證每次都會產生相同的報告清單,因為它會在執行時間掃描動作。如果您希望一律產生特定報告,您應該明確設定報告。例如,如果測試在您的建置中停止執行,則測試架構不會產生任何輸出,因此不會產生任何測試報告,而且動作可能會成功。如果您希望動作的成功取決於該特定測試,則必須明確設定該報告。
提示
開始使用新的或現有的專案時,請針對整個專案目錄使用自動探索 (包括 **/*
)。這調用專案中所有檔案的報告產生,包括子目錄中的檔案。
如需詳細資訊,請參閱在 動作中設定品質報告。
成功條件
您可以設定成功條件,在報告上強制執行品質閾值。例如,如果自動探索兩個程式碼涵蓋範圍報告,一個包含 80% 的線路涵蓋範圍,另一個包含 60% 的線路涵蓋範圍,則您有下列選項:
-
將行涵蓋範圍的自動探索成功條件設定為 80%。這會導致第一個報告通過,而第二個報告失敗,這會導致整體動作失敗。若要解除封鎖工作流程,請將新測試新增至您的專案,直到第二個報告的行涵蓋範圍超過 80%。
-
將行涵蓋範圍的自動探索成功條件設定為 60%。這會導致兩個報告都通過,這會導致動作成功。然後,您可以在第二個報告中增加程式碼涵蓋範圍。不過,使用此方法,您無法保證第一個報告中的涵蓋範圍不會低於 80%。
-
使用視覺化編輯器或為每個報告新增明確的 YAML 區段和路徑,明確設定一個或兩個報告。這可讓您為每個報告設定個別的成功條件和自訂名稱。不過,使用此方法,如果報告路徑變更,動作可能會失敗。
如需詳細資訊,請參閱設定報告的成功條件。
包含/排除路徑
檢閱動作結果時,您可以透過設定 IncludePaths
和 來調整 CodeCatalyst 產生的報告清單ExcludePaths
。
-
使用
IncludePaths
指定您要 CodeCatalyst 在搜尋報告時包含的檔案和檔案路徑。例如,如果您指定"/test/report/*"
,CodeCatalyst 會搜尋尋找/test/report/
目錄的動作所使用的整個建置映像。找到該目錄時,CodeCatalyst 會尋找該目錄中的報告。注意
對於手動設定的報告,
IncludePaths
必須是符合單一檔案的 glob 模式。 -
使用
ExcludePaths
指定您要 CodeCatalyst 在搜尋報告時排除的檔案和檔案路徑。例如,如果您指定"/test/reports/**/*"
,CodeCatalyst 不會搜尋/test/reports/
目錄中的檔案。若要忽略目錄中的所有檔案,請使用**/*
glob 模式。
以下是可能的 glob 模式範例。
模式 | 描述 |
---|---|
|
比對目前目錄中包含點的所有物件名稱 |
|
比對目前目錄中以 結尾的所有物件名稱 |
|
比對目前目錄中以 |
|
比對結尾為 的所有目錄的物件名稱 |
|
比對名為 的物件 |
|
從 比對子資料夾中的一個層級中的物件 |
|
從 比對子資料夾中兩個層級的物件 |
|
符合資料夾 |
CodeCatalyst 解譯 glob 模式,如下所示:
-
斜線 (
/
) 字元會分隔檔案路徑中的目錄。 -
星號 (
*
) 字元符合不超過資料夾邊界之名稱元件的零個或多個字元。 -
雙星號 (
**
) 會比對所有目錄中名稱元件的零個或多個字元。
注意
ExcludePaths
優先於 IncludePaths
。如果 IncludePaths
和 都ExcludePaths
包含相同的資料夾,則不會掃描該資料夾以取得報告。