TestNG

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

相关

  • 亨廷顿病亨廷顿舞蹈症(Huntington's Disease, HD)是一种遗传性疾病,会导致脑细胞死亡。早期症状往往是情绪或智力方面的轻微问题,接着是不协调和不稳定的步伐(英语:Gait)。随着疾病的进展,身
  • 克劳斯-玛菲克劳斯-玛菲(德语:Krauss-Maffei)是德国一家机械工程企业,总部设于慕尼黑。克劳斯-玛菲是全球领先的塑料及天然橡胶机械设备企业,并在该领域拥有全球唯一的机械技术:注塑和反应发
  • 柄灰包目伞菌目(学名:Agaricales),又名磨菇目,是伞菌纲的一目。本目包含33科、413属和超过13000种已经描述的物种,其中包括5个化石属。本目所包含的种类广泛,从最常见的洋菇,致命的毒鹅膏和
  • 潘多拉盒子潘朵拉的盒子(Pandora's box)源自于希腊神话,是宙斯给潘朵拉的神秘盒子,但原本在神话中是壶(pithos(英语:pithos)),壶在古希腊中是盛载食品的器具。根据神话,潘多拉打开魔盒,释放出人世
  • 哈里河哈里河(波斯语:هری‌رود‎,土库曼语:Tejen,Tedzhen),又名捷詹河,从阿富汗中部山区流入土库曼斯坦,消失于卡拉库姆沙漠中,全长约1150公里,流量每秒31立方米,集水面积约7万平方公里
  • 霍华德·斯金格霍华德·斯金格爵士(英语:Sir Howard Stringer,日语:ハワード・ストリンガ,1942年2月19日-,另一译名为史俊格)是一位英国美国企业家。1942年出生于英国威尔士,曾任日本Sony会长。在19
  • 阿鲁巴首相阿鲁巴首相是荷兰王国海外自治国阿鲁巴的政府首脑,和阿鲁巴的内阁组成阿鲁巴的政府机构。阿根廷总统 · 安提瓜和巴布达总理 · 巴巴多斯总理 · 巴哈马总理 · 巴拉圭总统
  • 王濬王濬(206年-286年1月28日),字士治,小字阿童。弘农郡湖县(今河南灵宝西)人。出身于世代二千石的官吏之家。王濬博学多闻,美姿貌,早年不谨细行,后来变得豁达有大志。徐邈遂将女儿嫁给王
  • 克莱夫·格兰杰克莱夫·威廉·约翰·格兰杰爵士(Sir Clive William John Granger,1934年9月4日-2009年5月27日),是一位出生于威尔士的经济学家,美国圣地牙哥加利福尼亚大学退休教授。1967年发明
  • 碲酸碲酸是化学式为Te(OH)6的化合物。它是弱酸,与强碱反应生成碲酸盐。碲酸可由碲或二氧化碲被双氧水或三氧化铬氧化制备。它具有较强的氧化性,但是其氧化反应在动力学上是惰性的,