JUnit 和 TestNG的区别
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,网上看了一篇英文帖子,讲解JUnit和TestNG框架的区别,挺好的,我这里翻译下。1.对于注解类的支持功能JUnitTestNG标注为类/方法为测试类和方法@Test@Test标注为在suite中所
千家信息网最后更新 2024年11月11日JUnit 和 TestNG的区别
网上看了一篇英文帖子,讲解JUnit和TestNG框架的区别,挺好的,我这里翻译下。
1.对于注解类的支持
功能 | JUnit | TestNG |
标注为类/方法为测试类和方法 | @Test | @Test |
标注为在suite中所有测试之前运行 | 无 | @BeforeSuite |
标注为在suite中所有测试之后运行 | 无 | @AfterSuite |
标注为在测试之前运行 | 无 | @BeforeTest |
标注为在测试之后运行 | 无 | @AfterTest |
标注为在测试Group中第一个测试方法之前运行 | 无 | @BeforeGroups |
标注为在测试Group中最后一个测试方法之后运行 | 无 | @AfterGroups |
标注为当前测试类中第一个测试方法之前运行 | @BeforeClass | @BeforeClass |
标注为当前测试类中最后一个测试方法之后运行 | @AfterClass | @AfterClass |
标注为在每次测试方法之前运行 | @Before | @BeforeMethod |
标注为在每次测试方法之后运行 | @After | @AfterMethod |
忽略某测试,让其不执行 | @Ignore | @Test(enable=false) |
期待测试抛出什么异常 | @Test(expected=XXXException.class) | @Test(exceptedExceptions=XXXException.class) |
测试超时,如果测试的执行时间超过了毫秒为单位设置的时间,那么就停止测试并且标记为失败 | @Test(timeout=1000) | @Test(timeout=1000) |
2.测试参数化
对于TestNG和JUnit都有不同的参数化设定功能,可是表现形式不同。参数化设定意味着当运行测试的时候,参数可以从外部传入到这个测试单元中。
对于TestNG来说,要2部分,一是当构造测试代码时候,要用@Parameters(value=XXX)来表示这个测试需要什么参数,这样的优点是可以让测试更加灵活并且可以根据不同的参数来得到不同的期望结果,比如:
public class TestNGTest6_1_0 { @Test @Parameters(value="number") public void parameterIntTest(int number) { System.out.println("Parameterized Number is : " + number); } }
然后,在我们的XML文件中,我们把参数的具体值设置进来,如下:
那么,如果我们要给的参数比较复杂,我们无法用一个简单的String或者 原子类型在XML文件"推"给测试方法,那么怎么办呢?这时候,我们就要用"拉"模型了,我们用一个DataProvider属性来给被测试的方法上声明它需要的数据,然后平行的,用@DataProvider注解来标注一个方法,让这个方法的返回值返回具体的数据,这样我们2个拼接下就完美了。
比如说:下面代码声明我们的测试类需要一个DataProvider:
@Test(dataProvider = "Data-Provider-Function") public void parameterIntTest(TestNGTest6_3_0 clzz) { System.out.println("Parameterized Number is : " + clzz.getMsg()); System.out.println("Parameterized Number is : " + clzz.getNumber()); }
然后相应的我们用@DataProvider来标注一个方法,这个方法提供了数据:
//This function will provide the patameter data @DataProvider(name = "Data-Provider-Function") public Object[][] parameterIntTestProvider() { TestNGTest6_3_0 obj = new TestNGTest6_3_0(); obj.setMsg("Hello"); obj.setNumber(123); return new Object[][]{ {obj} }; }
3.测试依赖性:
对于JUnit 来说,所有的测试彼此之间都是独立的,毫无依赖性。
但是对于 TestNG来说,我们完全可以让测试彼此之间有依赖性,做法就是dependsOnMethods属性来标识一个被依赖的测试方法:
@Test public void method1() { System.out.println("This is method 1"); } @Test(dependsOnMethods={"method1"}) public void method2() { System.out.println("This is method 2"); }
测试
方法
运行
参数
不同
依赖性
数据
之间
代码
功能
属性
文件
时候
时间
注解
复杂
优点
做法
单位
单元
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据包分析网络技术
专升本网络技术真题答案
新思科技软件开发加班吗
朔州市云创网络技术有限公司
软件开发岗考软件工程
web软件开发工作
广电系统网络安全技术能手
怪物猎人与服务器连接失败
2019网络安全新闻事件
保险公司内网数据库
蒲城软件开发最新招聘
严寒冰 网络安全
连接宽带服务器无响应
vb 阿里云数据库
ftp服务器 硬盘
网络安全软件学习头像
如何修改数据库的表格
金蝶k3服务器安装打印机
软件开发休假是怎样的
软件开发项目审计报告格式
深圳市自由码软件开发有限公司
linux数据库如何备份数据
出名的聊天软件开发
泗水软件开发
数据库插入数据说表名无效
四项活动网络安全宣传
数据库技术发展第二代
荆州服务器回收公司
网络安全学院招商
spss原始l数据库