TestNG

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

相关

  • 哈比人霍比特人(英语:Hobbits),是托尔金的奇幻小说中出现的一种虚构民族,体型娇小为其特色,但并非矮人或侏儒。据作者所述,霍比特人是人类的变种,或是人类的分支,但霍比特人坚信他们是一个
  • 维克拉姆历维克拉姆历或旃陀罗历(尼泊尔语:विक्रम सम्वत्),尼泊尔官方历法。维克拉姆历在英文中称“Vikram Samvat”或“Bikram Samvat”,缩写为“V.S.”或“B.S.”。维克拉姆
  • 核心太阳核心被认为是由中心点至0.2倍太阳半径的区域,是太阳系内温度最高的地方。它的密度高达150,000 kg/m³(是地球上水的密度的150倍),温度则为15,000,000K(对比于太阳表面的温度
  • 户政事务所户政事务所是中华民国各乡、镇、县辖市或区之中,受理户籍登记及管理的机关,其业务有户籍登记、户口名簿、身份证、印鉴证明等管理等。主管机关为中华民国内政部。中华民国的户
  • 奥地利经济奥地利的经济特色之一是其施行于德国类似的社会市场经济。在2004年,奥地利是欧盟内第四富裕的国家。以购买力平价计算的话,人均GDP约27666欧元,仅次于卢森堡、爱尔兰和荷兰。维
  • 猫肉猫肉是以猫为原料的肉食。人类在史前时代就有食用猫肉的记录,而部分国家至今仍有食用猫肉的传统,这是不违法的(只要不是偷窃他人家猫或食用保育类品种等)。如中国两广地区、越南
  • 梅格·惠特曼梅格·惠特曼(英语:Margaret Cushing "Meg" Whitman,1956年8月4日-),惠普公司总裁暨首席执行官。自1998年起担任在线拍卖及购物网站亿贝(eBay)的董事长及总经理,她也是2006年9月的《
  • 37系统37作战系统为中华民国海军接收美军亚伦桑纳级与基灵I级驱逐舰舰艇之作战系统。为美国海军Mk37 Fire Direction Radar System,于台湾海军称为:37系统。 与武进作战系统改装之阳
  • 国家科学基金国家科学基金会(英语:National Science Foundation,缩写为NSF),全称是美国国家自然科学基金会,是一个美国政府独立机构,由美国国会于1950年创立。该机构支持除医学领域外的科学和工
  • 多米尼加总统阿根廷总统 · 巴拉圭总统 · 巴拿马总统 · 巴西总统(沿革:君主) · 加拿大君主(总督) · 秘鲁总统 · 玻利维亚总统 · 多米尼加总统 · 多米尼克总统 · 厄瓜多尔总统 · 哥