讀古今文學網 > Maven實戰 > 14.6 在profile中激活集成測試 >

14.6 在profile中激活集成測試

很多項目都有大量的單元測試和集成測試,單元測試的粒度較細,運行較快,集成測試粒度較粗,運行比較耗時。在構建項目或者做持續集成的時候,我們都應當盡量運行所有的測試用例,但是當集成測試比較多的時候,高頻率地運行它們就會變得不現實。因此有一種更為合理的做法。例如,每次構建時只運行所有的單元測試,因為這不會消耗太多的時間(可能小於5分鐘),然後以一個相對低一點的頻率執行所有集成測試(例如每天2次)。

TestNG中組的概念能夠很好地支持單元測試和集成測試的分類標記。例如,可以使用如下的標注表示一個測試方法屬於單元測試:

然後使用類似的標注表示某個測試方法為集成測試:

使用上述方法可以很方便清晰地聲明每個測試方法所屬的類別。下面的工作就是告訴Maven默認只執行所有的單元測試,只在特定的時候才執行集成測試,見代碼清單14-20所示。

代碼清單14-20 在profile中配置執行TestNG測試組

如果讀者對Maven集成TestNG不熟悉,請先回顧10.7節。代碼清單14-20中首先配置了maven-surefire-plugin執行unit測試組,也就是說默認Maven只會執行單元測試。如果想要執行集成測試,就需要激活full profile,在這個profile中配置了maven-surefire-plugin執行unit和integration兩個測試組。

有了上述配置,用戶就可以根據實際情況配置持續集成服務器。例如,每隔15分鐘檢查源碼更新,如有更新則進行一次默認構建,即只包含單元測試。此外,還可以配置一個定時的任務。例如,每天執行兩次,執行一個激活full profile的構建,以包含所有的集成測試。

從該例中可以看到,profile不僅可以用來應對不同的構建環境以保持構建的可移植性,還可以用來分離構建的一些較耗時或者耗資源的行為,並給予更合適的構建頻率。