TestNG

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

相关

  • 非标准模型在数理逻辑的模型论中,称某理论的模型为非标准模型,如果它与预期模型(或称标准模型)不同构。如果预期模型是无限的, 且使用的语言是一阶的,则非标准模型的存在性由勒文海姆–斯科
  • 旅行旅行指以步行或交通工具进行的“长距离”位移,亦指为观赏不同景色及了解异与自身文化的差别而到不同城市、地区、国度或到遥远陌生地区参观、游玩、体验的文化概念。与旅游最
  • 光致蜕变光致蜕变是极端高能量的γ射线和原子核的交互作用,并且使原子核进入受激态,立刻衰变成为两或更多个子核的物理过程。一个简单的例子是,接踵而来的有效的γ射线从原子核中敲出一
  • 1920年1920年美国人口普查(英语:1920 United States Census)是美国历史上第14次全国人口普查,确定了美国的常住人口为105,710,620人,相比1910年美国人口普查,同比增长为15.0%。1920年的
  • 纯电动车纯电动车,又称电瓶车(英语:Battery Electric Vehicle,缩写:BEV),多被简称为电动车,是指以事前已充满电的蓄电池(大容量电瓶)供电给电动机,由电动机推动的车辆,而电池的电量由外部电源补
  • 米尔士威尔逊·米尔士(英语:Wilson Plumer Mills,1883年12月1日-1959年12月26日),美北长老会差会牧师。南京大屠杀期间,任南京安全区国际委员会成员。1883年生于南卡罗来那州温斯伯勒,1903
  • 黎明蟹科见内文黎明蟹科(学名:Matutidae)是短尾下目(螃蟹)馒头蟹总科的一个科,当地人称之为“moon crabs”。 与游泳的物种“梭子蟹科”不同的是:梭子蟹科只有最后一对足扁平化成泳肢,但黎明
  • 偏钛酸偏钛酸(Metatitanic acid),别名钛酸,分子式H2TiO3。白色粉末,不溶于水、无机酸和碱(新沉淀的偏钛酸除外)。由硫酸氧钛水解,然后水洗、过滤、烘干而制得。
  • 太阳光度太阳光度, L ⨀ {\displaystyle L_{\bigodot }} ☉/d)计算太阳的光度只需要知道二个
  • 尤马蒂拉国家森林尤马蒂拉国家森林(英语:Umatilla National Forest)位于俄勒冈州东北部、华盛顿州东南部的蓝山山脉间,面积1.4 × 106英亩(5,700平方千米)。依照林地面积降序排列,森林分布于尤马蒂