TestNG

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

相关

  • 群落生物系统层级关系:生物圈 > 生态系统 > 群落 > 种群 > 个体群落(英语:biocoenosis)或称为“生物群落”。生存在一起并与一定的生存条件相适应的动植物的总体。群落生境是群落生
  • 语言接触语言接触(language contact)是一个语言学研究的现象,发生在不同的语言系统相互互动或影响之时。此种研究又称接触语言学(contact linguistics)。当不同语言的说话者密切的接触时,
  • 医用大麻医用大麻(法语:Cannabis médical; 英语:medical cannabis或medical marijuana)是可用于医疗处方的大麻或大麻素。相比娱乐用大麻的高强度THC,医用大麻拥有相对较高的大麻二酚(CBD)
  • 古希腊语语法 (表格)本文只包括变格和动词变位的表格。详细的解释请参见古希腊语语法。变位表格没有包扩双数。下面表格不包括将来完成时。规则动词 τιμάω → τιμῶ (词干 τιμα-
  • 叶冠亨酒驾肇事致死案叶冠亨酒驾肇事致死案为2012年4月25日发生于台湾高雄市的一件酒驾肇事案件,造成两人当场死亡,一人间接死亡。2013年11月27日,叶冠亨酒驾撞死人案,最高法院维持前审认定,以公共危
  • Wsub6/subClsub18/sub三氯化钨是一种无机化合物,化学式为W6Cl18。它是一种八面体簇合物,为棕色固体,可由二氯化钨的氯化反应得到。这种簇合物有着12个双氯桥配体,其结构和铌或钽的氯化物类似。相比之
  • 西线无战事《西线无战事》(英语:All Quiet on the Western Front)是一套1930年首映的美国战争电影,为埃里希·玛利亚·雷马克名著《西线无战事》的电影版。电影由路易·迈斯东执导,卢·艾尔
  • 爱国法《美国爱国者法》(USA PATRIOT Act)是2001年10月26日由美国总统乔治·沃克·布什签署颁布的国会法,正式的名称为“Uniting and Strengthening America by Providing Appropriat
  • 希腊国家图书馆希腊国家图书馆(希腊语:Εθνική Βιβλιοθήκη),位于雅典市中心附近,由丹麦建筑师特奥费尔·翰森设计,为其新古典主义建筑三部曲之一(另外两个是雅典科学院、雅典大学)
  • 双电层电容器双电层电容器(EDLC)有时也称为电双层电容器,或超级电容器,是拥有高能量密度的电化学电容器,比传统的电解电容容量高上数百倍至千倍不等。一个标准电池大小的电解电容电容为几十