TestNG

✍ dations ◷ 2025-11-20 10:02:28 #Java平台,使用Apache许可证的软件

TestNG是一个Java语言的测试框架,由Cédric Beust受到JUnit和NUnit(英语:NUnit)的启发而创建。TestNG的设计目标是,覆盖更广泛的测试类别范围:单元测试、功能测试、端到端测试、集成测试等,并且功能更强大、更易于使用。

TestNG的主要功能包括:

TestNG中的数据提供者是测试类中的一个方法,该类为依赖测试方法提供了一个不同实际值的数组。

例如:

	/**	 * 本方法可为任何测试方法提供数据,只要声明测试方法的数据提供者名为	 * “provider1”即可。	 */	@DataProvider( name = "provider1" )	public Object createData1()	{		Object objects = new Object;		objects = new Object { "Cedric", 36 };		objects = new Object { "Anne", 37 };		return  objects;	}	/**	 * 本测试方法声明其数据应由名为“provider1”的数据提供者提供。	 */	@Test( dataProvider = "provider1" )	public void verifyData1( String s, Integer i )	{		System.out.println( s + ' ' + i );	}	/**	 * 本数据提供者返回一个参数数组的迭代器。	 */	@DataProvider( name = "provider2" )	public Iterator<Object> createData()	{		return new MyIterator( ... );	}	/**	 * 本数据提供者带有一个 java.lang.reflect.Method 类型的参数。如果多个测试方	 * 法使用同一个提供者,而且你又希望它能根据不同的测试方法返回不同的值,本方	 * 法就非常有用。	 */	@DataProvider( name = "provider3" )	public Object createData( Method m )	{		System.out.println( m.getName() );		return new Object { new Object { "Cedric" } };	}

数据提供者的返回值类型可以是以下两种类型之一:

TestNG既有现成软件,又可以通过IDE插件来调用。目前三大主流Java IDE——Eclipse、IntelliJ IDEA和NetBeans——都有针对TestNG的插件。它也可以配置为Apache Ant的定制任务,并且支持Apache Maven构建系统。Hudson的持续集成服务器已经内建了对TestNG的支持,并能进行跟踪,及随时间推移对测试结果进行可视化。多数Java代码覆盖率工具,如Cobertura(英语:Cobertura),都可以与TestNG无缝衔接。

TestNG可以生成HTML和XML格式的测试报告。Ant的JUnitReport任务可以转换XML输出,生成与使用JUnit时所获得的类似的报告。从4.6版开始,TestNG还提供了一个报告API。通过该API可以使用第三方的报告生成器,如ReportNG、PDFngreport和TestNG-XSLT。

TestNG和JUnit是两个相似且相互竞争的Java工具,它们之间的差异及各自优势已经讨论了多年。两大阵营都有强大的基础和支持者。Stack Overflow的讨论可以反映这一争议。

在JUnit 4中,@BeforeClass和@AfterClass方法必须被声明为静态的。而TestNG没有这个限制。

TestNG为包、测试和组提供了四对额外的装/卸注解,即@BeforeSuite和@AfterSuite,@BeforeTest和@AfterTest,@BeforeGroup和@AfterGroup,@BeforeMethod和@AfterMethod。

这两个工具都实现了这个功能,但实现方式截然不同。

TestNG有两种方式来为测试方法提供不同的参数值:设置testng.xml,及定义@DataProvider的方法。

在JUnit 4中,使用@RunWith和@Parameters一起来实现参数化测试,而@Parameters方法必须返回List,它携带所有实际的值,这些值将作为参数被传递给专门的类构造器。

JUnit常常被主流IDE默认支持,这有助于其更广泛的普及。而TestNG的目标则更广泛,不仅包括单元测试,还支持集成测试和验收测试等。哪一个更好或更适合,取决于使用情况和要求。

相关

  • 男性女乳症男性乳房发育症(英语:gynecomastia),亦作男性乳腺增生或女性化乳房,是指男性胸部因为乳腺不正常发育造成的增大状况。这种疾病的英文名称Gynecomastia的两个词根gyne-(γυνή)
  • 奥斯曼帝国的崛起奥斯曼帝国的崛起始自十三世纪末,至1453年为止。在十三世纪末,塞尔柱帝国灭亡,在安那托利亚形成许多半独立的安纳托利亚侯国,其中一个建立于瑟于特(Söğüt)地区的小侯国,是由一支
  • 全音素文字全音素文字(英语:alphabet)是表音文字的一种,它是以音素为单位的文字。和不标出元音的辅音音素文字不同,它的字母表中除了辅音字母,还有元音字母,用来表示语言中的元音。比较常见的
  • 霜冻酸奶冻酸奶是用酸奶,有时候用其他乳制品制成的冷冻甜点。它通常比冰淇淋酸,脂肪也比较少 (因为使用的是牛奶而不是奶油)。它跟牛奶冻 (近几年被称之为低脂肪或轻冰淇淋)和常见的霜淇淋
  • 纳机电系统奈机电系统(英语:Nanoelectromechanical systems,简称NEMS)与 微机电系统(MEMS)概念相似,不过尺度更小。他们承诺具有革命性的能力去测量小到分子尺度的位移和力,并且与纳米科技密切
  • 异丙醚异丙醚,结构式(CH3)2CHOCH(CH3)2。无色、具有醚特殊气味、流动性、具中等挥发性的易燃液体。可与水、乙醇、丙酮、乙腈、异丙醇形成二元共沸物。有持久的麻醉作用,但比乙醚轻
  • 外阴毛囊炎外阴毛囊炎(英语:vulvar folliculitis),是一种毛囊炎,生长于外阴部位,其由葡萄球菌引起。炎症多发生于大阴唇外侧、阴阜等有毛囊部位。周围皮肤发红,有触痛,重者可肿起形成圆锥形脓
  • 食蟹海豹食蟹海豹(学名:Lobodon carcinophagus),也称锯齿海豹,是分布于南极大陆附近海域的一种海豹。成年雄性食蟹海豹体长2.16~2.41米;雌性2.03~2.41米,重200~300公斤。嘴脸甚长。颊齿复杂,上
  • 东门街道东门街道是中国广东省深圳市罗湖区下辖的一个街道,地处罗湖区中心位置。总面积2.1平方公里。总人口10余万人,其中常住人口4.3万,暂住人口5.5万。东门街道是深圳市最早的街道办
  • 卡尔·雷纳卡尔·雷纳(英语:Carl Reiner,1922年3月20日-)是一位美国喜剧家、演员、导演与作家。他的职业生涯持续了将近70年。在他早期的的电视喜剧生涯中,从1950年到1957年,他合作撰写并出演