TestNG

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

相关

  • 外科手术人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学外科手术,简称手术,凡指透过器械,经外科
  • 同量素同量素是质量数相同,但质子数不同的原子核。同量素必然是不同的元素。例:Cu (原子序29) 和 Zn (原子序30) 具有质量数同为65的同量素。 理论上,两个以上的同量素不会都是稳定的
  • 慢性消耗病慢性消耗性疾病(英语:chronic wasting disease,缩写为CWD),又称鹿慢性消耗病、狂鹿症,一种发生在鹿科动物的传染病。是传染性海绵状脑病的一种,由变性普利昂(prion)子引起,会引起中枢
  • 钻石净度钻石净度为钻石视觉上的洁净程度,为钻石4C标准之一。影响其等级的瑕疵分为二者,内部的瑕疵称为内含物(英语:inclusion ),表面的缺陷称为表面瑕疵(英语:blemish )。评鉴钻石净度的准则
  • 外阴部生殖器官是指在复杂生物体上任何与有性繁殖及组成生殖系统有关的组织(严格意义上,不一定都属于器官)。另外有相关的性器官一词,广义地说是指会带来性快感的器官。生殖腺是指产生
  • 传记片依据真人真事改编,并一定程度上能够反映当时的历史事件和历史人物。与一般剧情片不同的是,在情节上依据现有的历史材料描绘典型环境,塑造人物形象,但在部分细节上可以有所取舍、
  • 永远的总书记朝鲜民主主义人民共和国主题共和国永远的主席-金日成劳动党永远的总书记-金正日朝鲜劳动党永远的总书记(朝鲜语:조선로동당의 영원한 총비서/朝鮮勞動黨 永遠한 總秘書)是作为朝鲜
  • 科林学院科林学院(英语:Collin College),又名柯林郡社区学院(Collin County Community College),是位于美国德州科林县的一所社区学院,其总部位于麦金尼的科林高等教育中心(CHEC)。 科林
  • 雷吉德夫雷吉德夫(或名拉迪耶迪夫,Radjedef;约公元前2528年-约公元前2520年在位)是古埃及第四王朝法老,是胡夫的儿子,卡夫拉的同父异母兄弟。一般人认为他因谋杀了他的哥哥卡瓦布,原来的王位
  • 2015年夏季世界大学生运动会第二十八届夏季世界大学生运动会(韩语:제28회 하계 유니버시아드)于2015年7月3日至7月14日在韩国光州市举行。2009年5月23日,国际大学运动总会宣布由光州市夺得本届赛事的主办权