TestNG原始碼解讀(二)

2021-09-29 00:09:59 字數 1804 閱讀 8314

4. 執行testng的一系列操作之新增***

//如果***不為空則把***listener物件加入到testng物件的***中

if (null != listener)

/**

* @deprecated use addlistener(itestnglistener) instead

*/// todo remove later /!\ caution: intellij is using it. check with @akozlova before removing it

@deprecated

public void addlistener(object listener)

addlistener((itestnglistener) listener);

} private final map, isuitelistener> m_suitelisteners = maps.newhashmap();

public void addlistener(itestnglistener listener)

//listener是isuitelistener型別則建立isuitelistener物件並新增

if (listener instanceof isuitelistener)

}private static void maybeaddlistener(map, e> map, class extends e> type, e value) else

}

擴充套件知識一之testng的***分類:1.如下圖testng.xml配置

執行mvn test之後報錯(由於類hellocontroller沒有繼承任何***listener)

2.如下圖testng.xml中配置了兩個相同的listener(suitelistener)

執行mvn test後:

3.如下圖testng.xml檔案中雖然配置了兩個操作相同的class,但由於類名不同所以執行結果如下:

擴充套件知識二之instanceof :

result = obj instanceof class 

result:布林型別。 

obj:必選項。任意物件表示式。 

class:必選項。任意已定義的物件類。

擴充套件知識三之getclass:

@test

public static void test()

執行結果:

&&&&class com.jmeter.listeners.suitelistener

@test

public static void test()

執行結果:

&&&&class com.jmeter.listeners.suitelistener1

TestNG原始碼解讀(四)

6.執行testng的一系列操作之執行 run try catch testngexception ex else result.setstatus has failure run方法 run testng.public void run 結束runexecutionlisteners false ...

TestNG原始碼解讀(二十一)

前面把failedreporter類中主要 走查了一遍,現在梳理一下該類的類關係圖及方法間的呼叫關係圖,時序圖等 1.類關係圖 通過類關係圖可以看出生成failedtestng.xml檔案就是通過各種 拿到執行用例的各種結果,然後整合成乙份失敗用例的xml檔案 2.generatereport方法的...

TestNG原始碼解讀(二十二)

失敗的xml檔案 failed testng.xml 中使用標籤包含失敗的用例,寫法如下 include標籤中的引數有6個,如下 用例名稱 private final string m name 失敗呼叫次數,僅在該方法資料由data provider提供才會出現 private final lis...