TestNG

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

相关

  • 演化发育生物学现代生物分类群体从它们的 共同祖先遗传分化的图示。进化论介绍(英语:Introduction to evolution) 演化的证据 共同起源 共同起源的证据群体遗传学 · 遗传多样性 突变 · 自
  • 火蚁火蚁属(Solenopsis)隶属于蚁科家蚁亚科,大约有380个物种,其中最知名的为入侵红火蚁(Solenopsis invicta),其腹部末端带有螫针,动物被螫伤后毒素会进入体内,严重的情况下会因全身性过
  • 英文中国邮报《The China Post》,中文名称为《英文中国邮报》,是在台湾发行的英文报纸,公司为中国邮报社股份有限公司,由黄遹霈、余梦燕夫妇创办于1952年9月3日。并交由第二代黄致祥接任,2016
  • 生态社会主义生态社会主义、绿色社会主义或社会主义生态学是一种结合马克思主义、社会主义、绿色政治、生态学以及另类全球化运动的意识形态。生态社会主义者大致上相信,资本主义制度通过
  • 奇异原子奇异原子通常是指与一般原子构成不同的原子,普通的原子是由电子e、质子p和中子n这三种长寿的粒子构成,但奇异原子却是以其他的粒子代替这三种稳定粒子中的一个或多个,通过电磁
  • 安德鲁斯联合基地安德鲁斯联合基地(英语:Joint Base Andrews,IATA代码:ADW;ICAO代码:KADW)是位于马里兰州乔治王子郡的美军联合基地,是美国总统搭乘空军一号和海军陆战队一号的地点。此外,也部署了大
  • 建安区建安区是中华人民共和国河南省许昌市下属的一个市辖区。2017年2月5日,许昌县正式撤销,设立建安区。面积1002平方公里,2010年人口76.7万。区政府驻将官池镇。现辖:将官池镇、五女
  • 居普良塔修斯·凯斯利乌斯·西普里亚努斯(拉丁语:Thascius Caecilius Cyprianus),英语化后成为居普良(英语:Cyprian, 约200年-258年),圣公会译圣西浦廉,又译西普里安,迦太基教会主教,基督教会
  • 恒星际旅行恒星际旅行,是一个用来指在恒星或行星系统之间进行假想性的载人或无人太空旅行的名词。恒星际旅行的难度是远高于行星际航行的;太阳系以内的行星间的距离是不多于三十个天文单
  • 皇家天文学会月报皇家天文学会月报(英语:Monthly Notices of the Royal Astronomical Society,MNRAS)是世界上最主要的天文学和天文物理学领域同行评审的学术期刊之一。出刊于1827年,发表作为天文