TestNG

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

相关

  • 中心体中心体作为一个部分真核细胞的胞器,由两个互相垂直的中心粒构成。中心体是动物细胞中主要的微管组织中心,同时也能够调节细胞周期进程。爱德华·凡·贝内登(Edouard Van Benede
  • 五岳五岳,又作五嶽,是中国五大名山的总称,分别为东岳山东的泰山、西岳陕西的华山、中岳河南的嵩山、北岳山西的恒山、南岳湖南的衡山,有些研究认为,“五岳”一词来源于中国的五行思想
  • 杀人执照《杀人执照》(英语:Licence to Kill)于1989年上映,是第16部詹姆斯·邦德系列影片,主角蒂莫西·道尔顿。詹姆斯·邦德(蒂莫西·道尔顿 饰)的好友菲力克专门负责执行缉毒的任务,没料到
  • 位能标势或称标量位,在向量分析与物理学中是一个基本概念(形容词“标量”常被省略,只要不会与矢势发生混淆)。给定一向量场F,其标势V为一标量场;对此标量场取负值梯度则得到F:相反过来,
  • 西线无战事《西线无战事》(英语:All Quiet on the Western Front)是一套1930年首映的美国战争电影,为埃里希·玛利亚·雷马克名著《西线无战事》的电影版。电影由路易·迈斯东执导,卢·艾尔
  • 犬齿兽犬颌兽属(学名:Cynognathus)是种三叠纪中期的肉食性犬齿兽类,身长约1米长。犬颌兽属于真犬齿兽类,真犬齿兽类是最类似哺乳类的一群似哺乳爬行动物。犬颌兽属几乎分布于非洲、南美
  • 幻萌网络幻萌网络,全称上海幻萌网络科技有限公司,是中国大陆的一家以网络游戏为主的公司,该公司因为开发《战舰少女》而知名。2015年7月份,游戏研发商幻萌网络催促发行商派趣科技交付运
  • 巴塔哥尼亚沙漠巴塔哥尼亚荒漠(西班牙语:Patagonia extraandina),也被称为巴塔哥尼亚草原,是阿根廷最大的荒漠,亦为世界第七大荒漠,占地673000平方公里。其沙漠主要位于阿根廷,智利南部,西侧以安地
  • 亚历山大·黑格小亚历山大·梅格斯·“艾尔”·黑格(英语:Alexander Meigs "Al" Haig Jr. ,1924年12月2日-2010年2月20日),出生于宾夕法尼亚州费城,是美国政治人物、外交官及美国陆军退役上将,曾任
  • 倒金字塔结构倒金字塔结构是绝大多数客观报道的写作规则,被广泛运用到严肃刊物的写作中,同时也是最为常见和最为短小的新闻写作叙事结构。内容上表现在在一篇新闻中,先是把最重要、最新鲜、