TestNG

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

相关

  • 环氧化酵素环氧合酶(拉丁语:Cyclooxygenase,简称COX)是一种酶(又名酵素),负责合成重要的生物激素——前列腺素家族的导介物质。当身体组织受到某种刺激如外伤、感染等会激活环氧合酶,使花生四
  • Apple Watch Series 4Apple Watch Series 4,是第四代的Apple Watch,在2018年9月12日发布。相较于前三代的机种,第四代新增了跌落感应和心电图绘制功能。另外Apple watch series 4 银色亦被重命名为
  • 荷叶效应莲花效应(lotus effect),也称作荷叶效应,是指莲叶表面具有超疏水性以及自洁(self-cleaning)的特性。在东方文化里,莲花是纯净的象征。虽然,莲花喜欢生长在泥泞的湿地,但其叶子和花仍
  • G·科里格蒂·特蕾莎·科里(Gerty Theresa Cori,出生名为拉德尼茨,Radnitz,1896年8月15日-1957年10月26日),美国生物化学家,1947年她与丈夫卡尔·斐迪南·科里以及阿根廷医生贝尔纳多·奥赛
  • 印度河-恒河平原中央平原(或作印度河-恒河平原,IndoGangeticPlain,或称印度大平原)地处南亚,是一片富饶、肥沃而古老的土地,平原大致分为巴基斯坦印度河流域部分、旁遮普(Punjab)与哈里亚纳平原区、
  • 2011年世界设计大会2011台北世界设计大会(2011 IDA Congress Taipei)是由国际设计联盟(IDA)协办,2011年10月24日至26日将由“台湾创意设计中心”于中华民国(台湾)的台北国际会议中心举办。预期将有逾3
  • 恩里科·莱塔恩里科·莱塔 (Enrico Letta, 发音:; 1966年8月20日—)意大利政治人物,曾任意大利总理、民主党副书记,众议院议员。生于意大利北部城市比萨,毕业于比萨大学国际法专业,随后进入比萨
  • MI密歇根州(英语:State of Michigan),是美国的一个州,位于五大湖地区,东面与加拿大首府渥太华的所在地安大略省接壤。其邮政缩写是MI。首府为兰辛,最大城市为底特律。密歇根州传统上
  • 余暇余暇(英语:Leisure),又称宽暇、空闲、闲暇、休闲、自由时间(free time),意指花费在基本维生活动,以及花费在劳动、家务、企业、商业活动及教育之外的时间。对于余暇的态度,随着文化与
  • 爱德华·赫利爱德华·赫利(1884年6月1日-1943年)是一位数学家,出生于维也纳,逝世于芝加哥。以其命名的结果包括赫利定理、赫利簇、赫利选择定理、赫利度量以及赫利-布瑞定理等。