原創文章,版權所有,允許轉載,标明出處:http://blog.csdn.net/wanghantong/article/details/40404939
testng提供了監聽器和攔截器的幾個接口供我們自己開發擴充,通過實作這些接口,來自定義我們在測試中想要的行為
接口清單:
testng提供了三種方式來配置開發者自己的接口:
1.注解
在testng中提供了一個類級别的注解,@listeners({*.class, *.class})
*.class就是我們自己實作的監聽
這種方式在我們開發中比較常用
2.配置檔案
在配置檔案中我們可以通過
<listeners>
<listener class-name="全類名"></listener>
</listeners>
來進行插拔式配置,這種方式是更靈活的,比第一種寫死在代碼中更為友善
3.通過serviceloader的方式
這種方式是比較複雜的,它更多的使用于對在編寫擴充架構時使用,比如我們對testng的增強,然後封裝成架構,提供給别人使用
說到打包就不得不說的一個東西meta-inf,其實我們在工程檔案中經常看到這個它,但是似乎一部分人不大知道它的作用,
在研究testng這個功能之前,我也是屬于這一部分人中的
下面先說meta-inf
它包含了如下檔案/檔案夾
1.manifest.mf ----- 定義一些擴充和打包相關的資料
2.index.list ------ 這檔案是在jar 工具打包的時候 使用 ' -i ' 選項來生成的,它包含了應用程式或擴充包中的位置聲明,它是jarindex實作的一部分,通常被類加載器用來加速類的加載過程
3.x.sf ------ jar檔案的簽名檔案
4.x.dsa ------ 簽名塊檔案,用同樣的檔案名關聯着簽名檔案,這個檔案存儲了簽名摘要和簽名檔案是一樣的。
5.services/ ------ 這個目錄用來存儲所有的業務供應源的配置檔案
上述的這些檔案或檔案夾可以被java 2 平台自動的識别和解讀并配置到應用程式、擴充、類加載器和業務中
接下來我們要做的就是把我們寫好的接口擴充實作類(.class),和meta-inf中放在同一個目錄下,記得類如果帶有包名,那麼和meta-inf同級的是包的根目錄
然後我們在meta-inf中建立services檔案夾,在其中建立一個檔案,檔案名為我們實作的接口的名稱,檔案内容寫的是我們的實作類的完整目錄
将meta-inf和類檔案打包生成jar檔案
此時就完成了,我們隻需要把生成的jar包添加到項目中就可以了。
注:如果我們在ide中操作,那麼我們需要注意哦,如果你把寫好的實作類複制出來打包又引入回去的話,,,其實這個時候,源碼的中的代碼是會覆寫jar包中的代碼執行的