TestNG

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

相关

  • 朱彧朱彧(?-?),字无惑,晚号萍洲老圃,北宋湖州乌程(今浙江湖州)人。其父朱服,官至“广州帅”。朱彧生年不详,幼时依母胡氏居常州,后随父寓居开封各地,崇宁初年至广州,曾见到苏轼。晚年在湖北黄冈
  • 博纳·劳安德鲁·博纳·劳(Andrew Bonar Law,1858年9月16日-1923年10月23日),加拿大裔英国保守党政治家,1922年至1923年出任英国首相,他是鲍里斯·约翰逊以外,唯一出生于英伦以外的英国首相
  • 温迪哥温迪哥 (英语:Wendigo,英文中也拼写作windigo、weendigo、windago、waindigo、windiga、witiko、wihtikow等) ,又译冰心食人魔 ,是一种食人的怪物,源自于美国和加拿大阿尔冈昆印地
  • 魔兽争霸3《魔兽争霸III:混乱之治》(英语:Warcraft III: Reign of Chaos)是一款即时战略游戏,属于暴雪娱乐出品的《魔兽争霸》系列第三代作品,于2002年发行。迄今总共发布了二十八个版本。2
  • Eimeriorina见内文Eimerlida艾美亚目(学名:Eimeriorina或Eimerlida),又名艾美耳亚目、艾美球虫亚目或球胞子虫亚目,是顶复门真球虫目之下的一个亚目。本亚目之下有12科、两个亚科及50多个属
  • 1968年罗伯特·肯尼迪遇刺案阴谋论1968年6月5日,罗伯特·弗朗西斯·肯尼迪在洛杉矶国宾饭店举行完记者会后离场时遭到阿拉伯裔美国人索罕·比沙拉·索罕的枪击并在6月6日死亡,由于在1963年时他的哥哥——美国第
  • 舞阳贾湖聚落遗址贾湖遗址是9000年至7700年前的新石器时代裴李岗文化文化遗址,位于中国河南省漯河市舞阳县北舞渡镇西南1.5公里的贾湖村,面积约55000平方米。出土了现在仍可吹奏的五声至七音阶
  • 民主制度分类民主制度是指实现民主的相关政治制度,有多种分类方式。可以说是决定性地界说该制度的特征的分类方式,历史上民主制曾经从古代起都被君主专制或贵族制所淘汰,直到近代才告复兴,但
  • 君士坦丁省 (法属阿尔及利亚)君士坦丁省(法语:Département de Constantine)是法国在法属阿尔及利亚的一个省份,存在于1848-1962年间,省会君士坦丁。 5个海外省及大区
  • 囊尾蚴囊尾蚴(Cysticercus)指的是带绦虫属动物的幼虫,可以导致囊虫病。囊尾蚴发现于17世纪晚期。囊尾蚴的中间宿主为猪、牛、羊等动物,囊尾蚴寄生于这些动物的肌肉中,并通过食物传播给