TestNG

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

相关

  • 次氯酸钠次氯酸钠(sodium hypochlorite),化学式NaClO,是钠的次氯酸盐。次氯酸钠与二氧化碳反应产生的次氯酸是漂白剂有的成分。氯气溶于冷而且稀的氢氧化钠溶液产生次氯酸钠、氯化钠及水
  • 温带温带(英语:Temperate climate、德语:Gemäßigte Zone、法语:Climat tempéré),在地理学上,是位于热带和极圈之间的气候带。北半球温带区的范围是从北纬23.5°的北回归线到北纬66.
  • 酪蛋白酪蛋白(Casein,源自拉丁语的caseus,意思为奶酪。中文或称奶酪素),含有磷酸根,属于磷蛋白(αS1, αS2, β, κ)。酪蛋白是哺乳类的奶的主要成分,在牛奶含有的蛋白质中占80%,人奶含有
  • 布朗克斯动物园布朗克斯动物园(Bronx Zoo)是位于美国纽约市布朗克斯公园中、横跨布朗克斯河的一个动物园,它是美国面积最大的动物园之一,达265英亩(107公顷)。它是国际野生生物保护学会的总部所
  • 中央美术学院中央美术学院(英语:Central Academy Of Fine Arts,CAFA),简称中央美院、央美、中美院,成立于1950年4月,由国立北平艺术专科学校与华北大学三部美术系合并而成。是中华人民共和国教
  • 阿拉木图阿拉木图或译阿尔马地(哈萨克斯坦语:Алматы;俄语:Алма-Ата)是哈萨克斯坦的一座直辖市,是该国的第一大城市。坐落在哈萨克斯坦东南部的山区,邻近吉尔吉斯斯坦。阿拉木
  • 立方艾米体积(英语:Volume)是物件占有多少空间的量。体积的国际单位制是立方米。一件固体物件的体积是一个数值用以形容该物件在空间所占有的空间。一维空间物件(如线)及二维空间物件(如正
  • 塞尔维亚广播电视台塞尔维亚广播电视台(塞尔维亚语:Радио-телевизија Србије / РТС)是塞尔维亚的国家广播电视台。制作并播出新闻、电视剧和体育节目,并通过广播、电视和
  • 涂们涂们(1960年2月-),中国大陆电影演员,生于内蒙古呼伦贝尔市。2017年凭借电影《老兽》获得第54届金马奖最佳男主角奖。2005 李雪健2017 张译2011 王学圻2018 涂们2012 葛优2019 王
  • 查维拉·瓦尔加斯伊莎贝尔·瓦尔加斯·利萨诺(西班牙语:Isabel Vargas Lizano,1919年4月17日-2012年8月5日),又名查维拉·瓦尔加斯(Chavela Vargas)是一位墨西哥歌手。绰号为“红斗篷女郎”,她擅长演