TestNG

✍ dations ◷ 2025-12-07 01:20:36 #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的目标则更广泛,不仅包括单元测试,还支持集成测试和验收测试等。哪一个更好或更适合,取决于使用情况和要求。

相关

  • 大洋洲大洋洲(英语:Oceania),是指地缘政治学,将澳大利亚洲与太平洋诸岛屿并称的地理区域,大洋洲并不是地质学上严格意义的“大洲”,占全球总陆地面积的6%。在4万至12万5千年前,澳大利亚土
  • 第六次反法同盟在第六次反法同盟(1812年—1814年)中,由匈牙利、普鲁士、俄罗斯、瑞典、大不列颠与爱尔兰联合王国及莱茵联邦的某些邦国组成的同盟,打败了法国,拿破仑被放逐到意大利的厄尔巴岛。
  • 侯赛因侯赛因·宾·塔拉勒(阿拉伯语:حسين بن طلال,Ḥusayn bin Ṭalāl;Hussein bin Talal,1935年11月14日-1999年2月7日),又称侯赛因一世(King Hussein I),为约旦国王,在位期间自19
  • ETLETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓
  • UCLA学生宿舍加州大学洛杉矶分校(UCLA)拥有规模庞大的学生宿舍系统,为一万余名本科及研究生提供住宿。大学庞大的宿舍群由生活服务办公室(Office of Residential Life)及宿舍管理办公室(Housin
  • 欧裔美国人欧裔美洲人(英文:European American)指血统源自欧洲人但现居于美国的欧洲移民。他们主要是欧洲殖民者的后代。欧洲裔美国白人普遍是中产阶层或富有,接受教育程度高并拥有高学历,
  • 华北豹华北豹(学名:Panthera pardus japonensis)也称中国豹,是一种大型猫科食肉动物,是豹的一个亚种,为中国特有,同时被国际自然保护联盟列为极危物种。历史上曾经广泛分布于西到兰州,北到
  • 奥古斯都 (称号)奥古斯都(拉丁文 Augustus的中译,复数型 Augusti)的原意为“神圣的”、“高贵的”,带有宗教与神学式的意味。它的阴性型为奥古斯塔(Augusta)。希腊文的同义字是“Σεβαστός
  • 小行星序号小行星序号适用于小行星和矮行星,由国际天文联合会设置的分支机构小行星中心处理。它们最后的完整格式包含三个部分:依据发现的先后顺序配赋的文字与数字,轨道确定后给予的编号
  • 低眼无齿低眼巨鲇(学名:),又称低眼无齿�、虎头鲨、鲨鱼鲇,是�鲇科的一个物种、原生于东南亚河流的特有种。它的型态与鲨鱼很相像,但是其实是鲇鱼的一种。因为它会有着彩虹色的外表,所以英文的