TestNG

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

相关

  • 财产权财产权(英语:property rights),也被简称为财产,是指“有金钱价值的权利所构成的集合体。所谓具有金钱价值,指得获有对价而让与,获得以金钱为表示者”。财产权在某些国家受到宪法保
  • 吹蚀穴在地质学中,吹蚀穴(又称吹穴或俗称喷泉洞)是指在海蚀洞顶部的对外开口。如果该洞穴的地形合适,当海浪从海蚀洞入口涌入时,会提高洞内压力,造成空气及海水从吹蚀穴喷出,产生一股壮观
  • 坡地蠕动蠕动(地貌学),即为斜坡上的松散堆积物或表面岩层在自身重力作用下,顺坡向下发生长期缓慢的移动现象。坡地蠕动主要出现在15°-35°的坡地上,坡度较大的坡地,难以保存黏土和水分,而<1
  • 海蕾纲隙管海蕾目 Fissiculata 喷管海蕾目 Spiraculata 地位未定: †Macurdablastus海蕾(blastoids)是一类已灭绝的棘皮动物。多为梨形,有茎和腕羽,萼部较小。它们用很薄的茎节附着在基
  • Cu(Hphth)sub2/sub邻苯二甲酸氢铜是铜(II)的邻苯二甲酸的酸式盐,化学式为Cu2。将CuCl2·2H2O溶解在尽可能少的热的蒸馏水中,化学计量比的邻苯二甲酸氢钠溶液加入其中,冷却至室温,过滤可得产物(二水
  • 晋语.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","Gentium Alternative","TITU
  • 袭击法国南部地区(1944年-1945年)龙骑兵行动是第二次世界大战中盟军于1944年8月15日在法国南部的入侵行动,也称普罗旺斯登陆。入侵是由美国第7军团部队与主要由法国第1军团组成的后续部队发起的
  • 翔鸟翔鸟属(属名:Xiangornis)为一种生活于白垩纪早期的反鸟类,化石发现于中国辽宁的朝阳市大平房镇,属于白垩纪早期的九佛堂组地层。
  • 自行车及摩托车的动力学自行车及摩托车的动力学是有关自行车及摩托车以及其组件,其受力以及运动的物理学,属于多体动力学(英语:Multibody dynamics)的范畴。动力学属于物理学中经典力学中的一个领域。自
  • 澄沙之味《澄沙之味》(日语:あん,An),是河濑直美执导的一部日本剧情片,由树木希林、永濑正敏、内田伽罗(日语:內田伽羅)等人主演。入选第68届戛纳电影节“一种注目”单元开幕片。改编自明川哲