TestNG

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

相关

  • 约翰·麦克劳德约翰·詹姆士·理察·麦克劳德(John James Richard Macleod,1876年9月6日-1935年3月16日)是一位苏格兰医师、生理学家。他在1923年与弗雷德里克·格兰特·班廷因为发现了胰岛素,
  • 气功传统宗教仪式:神明秘密社会:气功(炁功)是透过以呼吸的调整、身体活动的调整和意识的调整(调息,调形,调心)为锻炼方法,务求达到强身健体、健康身心、抗病延年、开发潜能等目的。气功的
  • 鳄鱼鳄目(学名:Crocodilia)通称为鳄鱼,属于脊索动物门蜥形纲。分布于热带到亚热带的河川、湖泊、海岸中,现存24种。鳄目的体长范围从1.5米到7米;一些史前物种,例如晚白垩世的恐鳄,体长可
  • SprintSprint Corporation (NYSE:S),译作“斯普林特公司”,前称为Sprint Nextel Corporation。 是一家在美国、波多黎各、美属维尔京群岛运营有线通信与无线通信的控股公司。该公司与
  • 皮肯斯县皮肯斯县(Pickens County, Georgia)是美国乔治亚州西北部的一个县。面积603平方公里。根据美国2000年人口普查,共有人口22,983人。2005年人口28,442人。县治杰斯帕(Jasper)。成立
  • 510110 数学 120 信息科学与系统科学 130 力学 140 物理学 150 化学 160 天文学 170 地球科学 180 生物学210 农学 220 林学 230 畜牧、兽医科学 240 水产学310 
  • Hsubo/sub值哈米特酸度函数 (H0) 是一种用于衡量高浓度酸酸性的指标,包括超强酸。它是由物理有机化学家路易斯·普拉克·哈米特(Louis Plack Hammett)建议使用的 ,这也是最著名的酸度函数 ,
  • 蒲松龄蒲松龄(1640年-1715年,明崇祯十三年-清康熙五十四年),中国清代志怪小说作家。字留仙,一字剑臣,别号柳泉居士,山东淄川县(今淄博市淄川区)人(族裔有争议),世称“聊斋先生”。蒲松龄平时喜好
  • 昆明理工大学昆明理工大学,简称昆工,是中华人民共和国云南省昆明市的一所全日制本科公办省属普通高等学校。它的前身为昆明工学院。昆明理工大学是以工为主,理工结合,兼有经济、文学(含艺术)、
  • 克氏综合征克氏综合征(Klinefelter's syndrome)或称XXY、47XXY综合征、俗称次雄性综合征,是一系列由于男性有两条或两条以上的X染色体所导致的疾病。该疾病的主要特征是不孕。通常症状都