TestNG

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

相关

  • 头孢羟氨芐头孢羟氨苄是一种杀菌的头孢菌素类广谱抗生素,对革兰氏阳性和革兰氏阴性细菌的感染有效。它由头孢氨苄羟基段衍生而来。可用于治疗轻度至中度易受感染,如因细菌化脓性链球菌引
  • 一级反应在化学中,一级反应(first-order reaction),亦称为一次反应,是指反应级数为1的化学反应。放射性元素衰变就是一级反应的一个例子。对于反应  
  • 739年晋国曲沃之乱开始,前745年晋昭侯把曲沃(在今中国山西省曲沃县)封给其叔成师。前739年晋大臣潘父弑杀了晋昭侯,迎立曲沃桓叔。晋人发兵攻桓叔,桓叔退回曲沃。晋人共立昭侯子公子平
  • 艺宴坊艺宴坊(英文:Silence le Cabaret)是结合无声晚宴与戏剧的餐饮体验,参加者要在无声环境中欣赏戏剧和享受晚宴,位于九龙长沙湾通州街的星汇居之内。这个概念源于19世纪的巴黎,是一种
  • 世界革命世界革命指的是马克思主义中,以暴力革命推翻世界各国的资本主义的思想。马克思主义理论认为世界革命可以导致世界共产主义(world communism)及之后的无国界共产主义(stateless c
  • 斯蒂芬·茨威格斯蒂芬·茨威格(德语:Stefan Zweig,1881年11月28日-1942年2月22日),奥地利犹太裔作家,中短篇小说巨匠,擅长人物的心理分析,也著有多篇名人传记。斯蒂芬·茨威格生于维也纳,父亲莫里茨
  • 尼尼亚号哥伦布首航美洲舰队中有三条船,尼尼亚号(La Niña,又译:)是舰队中的其中一条轻快帆船,并在圣玛利亚号搁浅后成为哥伦布首航舰队的旗舰。它本来是挂三桅三角帆的,后来在到达大加那利
  • 东亚城市人口列表以下列出东亚的主要都市及其人口数:根据世界银行(World Bank)公布的“东亚都市景观变化”报告,2000年到2010年,东亚地区的都市人口新增近2亿人,东亚地区人口数超越10万的都会区已
  • 打孔卡打孔卡(Punched card)又称穿孔卡、霍尔瑞斯式卡或IBM卡,是一块纸板,在预先知道的位置利用打洞与不打洞来表示数字消息。现在几乎是一个过时的存储器,但其设计转变成现今常用于考
  • 帕耶特国家森林帕耶特国家森林(英语:Payette National Forest)是一座美国国家森林,坐落于爱达荷州的中西部,分布于瓦利县、爱达荷县、亚当斯县和华盛顿县。森林面积约为2.3 × 106英亩(9,300平