天天看點

TestNG官方文檔中文版(5)-測試方法/類群組

5 - Test methods, Test classes and Test groups

5.1 - Test groups

TestNG容許執行複雜的測試方法分組。不僅可以申明方法屬于組,而且可以指定分組包含其他分組。

然後TestNG可以被調用,并被要求包含某些分組和排除其他的分組。

這将提供怎樣劃分測試的最大彈性,并且如果想運作兩個不同的測試裝置不需要重新編譯。

例如,非常普遍的需要至少兩個種類的測試

    * Check-in tests.  這些測試将在送出新代碼之前運作. 它們典型的被要求快速而且僅僅确認沒有基礎功能被破壞。

    * Functional tests.  這些測試将覆寫所有的軟體功能,并且必須運作至少1天,盡管理想的是連續運作.

代表性的,check-in測試是功能性測試的子集。TestNG容許用非常直接的方式說明這個。

例如: 可以這樣構造測試,申明完整的測試類屬于"functest"組,另外兩個方法屬于組"checkintest":

 調用TestNG,使用

 将運作在類中的所有測試方法,如果使用checkintest調用則将隻運作testMethod1()和testMethod2().

這裡由其他例子,這次使用正規表達式。假設某些測試方法可能無法在Linux上運作,測試将是類似如此:

 你可以使用下面的testng.xml檔案隻啟動Windows方法:

 注意:TestNG使用正則表達,而不是wildmats。注意這個差别。

Method groups

同樣可以包含或排除個别方法:

 這在需要使莫個單獨的方法失效而不想重新編譯時非常友善,但是不建議太多的使用這個機制,因為這将可能破壞你的測試架構 如果你開始重構你的java代碼(标簽中使用的正規表達式可能不再比對你的方法)

5.2 - Groups of groups

"functest" itself will contain the groups "windows" and "linux" while

"checkintest will only contain "windows".  Here is how you would define

this in your property file:

組可以包含其他組。這些組被稱為"MetaGroups"。例如,你可能想定義一個"all"組,包括"checkintest"

和"functest"。"functest"自身将包含組 "windows" 和

"linux",而"checkintest"将包含"windows".

5.3 - Exclusion groups

TestNG 容許包含組也容許排除組.

例如,當由因為最近的修改而臨時破壞的測試而又沒有時間去修複它們時非常有用。無論如何,你想要幹淨的運作功能性測試,是以你想要是這些測試失效,但是記住它們重新被激活。

一個簡單的解決這個問題的方法是建立一個稱為"broken"的組并讓這些測試方法歸屬它。例如,在上面的例子中,我知道testMethod2() 現在被破壞了,所有我想關閉它:

現在我所想要做的隻是在運作中排除這個組:

用這種方法,我将得到一個幹淨的測試運作,同時記錄了那些被破壞并想要後續修複的測試。

注意:你也可以通過使用在@Test and @Before/After annotations上的"enabled"屬性在個體的層面上關閉測試,

5.4 - Partial groups

你可以在類的級别上定義組,然後在方法的層次上添加組:

在這個類中,method2() 屬于組"checkin-test",在類的級别定義。而method1() 同時屬于 "checkin-test" 和 "func-test".

TestNG官方文檔中文版(5)-測試方法/類群組

注:轉載需注明出處及作者。