摘要
TestNG是一種基于注釋的測試框架,通過添加諸如靈活的裝置、測試分類、參數測試和依賴方法等特性來克服JUnit的一些不足之處。此外,TestNG運行于Java 5.0(通過注釋)和Java 1.4(通過JavaDoc樣式的注釋)之上。由于TestNG可以輕松地將開發人員測試分類成單元、組件和系統組,因此能夠使構建時間保持在可管理的范圍內。通過使用group注釋和多重Ant任務,測試組可以不同的頻率運行于一臺工作站之上或持續集成環境中。
本文分析了測試分類的概念,演示了如何將TestNG的group注釋與靈活的測試裝置具相結合,通過特定的Ant目標促進以不同頻率運行的測試。本文假設您了解TestNG。
TestNG組的研究
TestNG支持一種直觀的機制,用于分組測試類和相關測試方法。在最基本的層面上,TestNG的分組特性是通過test注釋的groups參數啟用的,它可附加到類或者單個方法。從其名稱即可看出,一個類或單個方法可屬于1至n組。
例如,下面的類包含兩個公共方法,缺省標為測試并進一步分類為屬于one組:
/**
* @testng.test groups="one"
*/
public class SimpleGroupedTest {
private String fixture;
/**
* @testng.before-class = "true"
*/
private void init(){
this.fixture = "Hello World";
}
public void verifyEquality(){
Assert.assertEquals("Hello World", this.fixture);
}
public void verifySame(){
String value = this.fixture;
Assert.assertSame(this.fixture, value);
}
}
相反,下一個類定義了兩個測試方法。然而,一個方法卻屬于兩個不同的組——one和two。相應地,任何相關裝置邏輯都必須與其所需的一個組關聯。本例中,在組one或組two執行之前,必須首先將init()方法配置為運行。
public class SimpleGroupedTwoTest {
private String fixture;
/**
* @testng.before-class = "true"
* groups = "one, two"
*/
private void init(){
this.fixture = "Hello World";
}
/**
* @testng.test groups="one, two"
*/
public void verifyEqualityAgain(){
Assert.assertEquals(this.fixture, "Hello World");
}
/**
* @testng.test groups="two"
*/
public void verifySameAgain(){
String value = this.fixture;
Assert.assertSame(value, this.fixture);
}
}
TestNG支持以多種方式運行所需組,從通過TestNG Eclipse插件指定這些組一直到在TestNG Ant任務中列舉它們。