TestNG

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

相关

  • 水蒸气水蒸气(也称氛气、蒸汽),是水(H2O)的气体形式。当水达到沸点时,水就变成水蒸气。水蒸气在空气中是无色的。在海平面一标准大气压下,水的沸点为100°C或212°F或373.15K。当水在沸点
  • 送气与不送气送气(Aspiration),语音学概念,指某些阻碍音在除阻时所伴随的强烈的空气喷吐。为感知送气与不送气音之间的差别,试将一只手或点燃的蜡烛置于口前,朗声说“滩”(/tʰan/)、“单”(/t
  • 马桶马桶,又称便桶、粪桶、恭桶、虎子、木马子等,是指承接粪便、尿溺的厕所用具。马桶的使用方式为坐式,与蹲坑式厕所(也称为蹲式马桶)相对。尿罐、尿壶、尿盆等则仅限于承接尿液。广
  • 系统性的系统指的是由相互联系、相互作用的要素(或部分)组成的具有一定结构和功能的有机整体;准确来说,要素+结构=系统。从系统的角度观察研究客观世界的学科,就是系统科学。它研究的领域
  • 亚洲新湾区亚洲新湾区(英语译名:Asia New Bay Area)是台湾高雄市的新兴中心商业区,位于高雄多功能经贸园区的核心区。亚洲新湾区是高雄产业转型最重大的建设,现在朝着港市合作方向进行,目标
  • 瑞典和挪威国王奥斯卡二世奥斯卡二世(Oscar II,1829年1月21日-1907年12月8日),原名奥斯卡·弗雷德里克(Oscar Frederik),1872年至1905年之间为挪威国王,由1872年至去世为瑞典国王。他是瑞典及挪威国王奥斯卡一
  • 中国对虾明虾(学名:Fenneropenaeus chinensis),又名中国对虾、中国明对虾、对虾、东方对虾、中国对虾、海捕大虾、在日本被称为“大正虾”。因为雌性偏青、雄性偏棕黄,又称为青虾、黄虾。
  • 夏都夏都,即夏日的行都,是一个在在夏季炎热天气下长时间内被用作行都的城市。这制度在现代已不太普及,因冷气的普及也减少了迁移到行都的必要性。在13世纪时,元上都开平为元朝的夏都
  • 巴西-印度关系巴西-印度关系指的是巴西联邦共和国与印度共和国之间的双边外交关系。巴西和印度两国都曾为葡萄牙帝国的殖民地,故此两国在很早以前就建立了关系。巴西与印度在国际贸易、气候
  • 笛真人笛真人(1973年2月22日-),前日本足球运动员。