天天看點

TestNg監聽器(一)-----監聽器的類型和配置使用的方法---附加META-INF詳解

原創文章,版權所有,允許轉載,标明出處: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包中的代碼執行的