TestNG

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

相关

  • 兔唇唇裂与颚裂(英语:Cleft lip and cleft palate),常被合称为唇颚裂,是一系列包含唇裂(CL)、颚裂(CP)、或二者皆有的疾病(CLP)。唇颚裂常包含上颚裂到鼻腔,甚至裂到耳朵都有可能;裂口可能发
  • 奥斯特奥斯特(Oersted)是厘米-克-秒制里的磁场强度(H场)、磁化强度的单位,简称“奥”(Oe)。1930年,国际电工委员会为了纪念丹麦物理学者汉斯·奥斯特,特将此单位命名为奥斯特。奥斯特定义为
  • 合弓纲合弓纲(Synapsida)意为“固定的颧弓”,也被称成兽形纲(Theropsida),是羊膜动物的一纲,包含羊膜动物中所有与哺乳类关系较近的物种。合弓纲是羊膜动物的两个主要演化支之一,另一个演
  • 叶庭珪叶庭珪,字嗣忠,号翠岩。瓯宁(今福建建瓯)人。喜读书,好借书,动辄抄录。徽宗政和五年(1115年)进士,初授武邑丞,后任德兴知县。高宗绍兴年间任福清知县,后召为太常寺丞,升迁为兵部郎中,与秦
  • 国会山庄National Capital Commission国会山庄(英语:Parliament Hill;法语:Colline du Parlement)位于加拿大安大略省渥太华市中心,坐落渥太华河南岸的官地,为加拿大国会建筑群所在。国会建
  • 镇江镇江市,简称镇,古称京口、润州,是中华人民和国江苏省下辖的地级市,位于江苏省南部,长江南岸。市境东邻泰州市,北接扬州市,西临南京市,南界常州市。地处宁镇山脉东端与长江三角洲西部
  • 中国农业银行中国农业银行股份有限公司(简称农业银行、农行,英语:Agricultural Bank of China Limited,缩写:ABC)是中华人民共和国的五大国有大型商业银行之一,资产在中国银行排名第三。2014年
  • 300型台铁S300型柴电机车,是台铁第一款真正完全支线与调车专用的柴电机车。1963年,台湾铁路管理局邀请世界银行运输顾问团来台评估运输需求,决定实施支线与调车全面柴油化。为实现此
  • 圜丘坛 (首尔)圜丘坛(圆丘坛),又称祭天坛,是朝鲜半岛君主祭天的祭坛,位于韩国首尔,性质与中国的天坛相似。首尔的祭天坛在设计布局上与北京天坛非常相似,有与祈年殿、圜丘坛(환구단)、皇穹宇(황
  • 1983年-1985年埃塞俄比亚饥荒1983年至1985年,在今埃塞俄比亚和厄立特里亚发生了大范围饥荒。此次饥荒是埃塞俄比亚在20世纪最严重的一次饥荒。在埃塞俄比亚北部有超过400,000人死亡,但超过一半的死亡率是