讀古今文學網 > Maven實戰 > 10.8 重用測試代碼 >

10.8 重用測試代碼

優秀的程序員會像對待產品代碼一樣細心維護測試代碼,尤其是那些供具體測試類繼承的抽像類,它們能夠簡化測試代碼的編寫。還有一些根據具體項目環境對測試框架的擴展,也會被大範圍地重用。

在命令行運行mvn package的時候,Maven會將項目的主代碼及資源文件打包,將其安裝或部署到倉庫之後,這些代碼就能為他人使用,從而實現Maven項目級別的重用。默認的打包行為是不會包含測試代碼的,因此在使用外部依賴的時候,其構件一般都不會包含測試代碼。

然後,在項目內部重用某個模塊的測試代碼是很常見的需求,可能某個底層模塊的測試代碼中包含了一些常用的測試工具類,或者一些高質量的測試基類供繼承。這個時候Maven用戶就需要通過配置maven-jar-plugin將測試類打包,如代碼清單10-20所示。

代碼清單10-20 打包測試代碼

maven-jar-plugin有兩個目標,分別是jar和test-jar,前者通過Maven的內置綁定在default生命週期的package階段運行,其行為就是對項目主代碼進行打包,而後者並沒有內置綁定,因此上述的插件配置顯式聲明該目標來打包測試代碼。通過查詢該插件的具體信息可以瞭解到,test-jar的默認綁定生命週期階段為package,因此當運行mvn clean package後就會看到如下輸出:

maven-jar-plugin的兩個目標都得以執行,分別打包了項目主代碼和測試代碼。

現在,就可以通過依賴聲明使用這樣的測試包構件了,如代碼清單10-21所示。

代碼清單10-21 依賴測試包構件

上述依賴聲明中有一個特殊的元素type,所有測試包構件都使用特殊的test-jar打包類型。需要注意的是,這一類型的依賴同樣都使用test依賴範圍。