Junit单元测试框架
创始人
2025-06-01 15:15:13
0

1)Junit是一个开源的JAVA语言的单元测试框架,也是JAVA方向使用最广泛的单元测试框架,使用JAVA开发者都应该学习junit框架,并且掌握单元测试的编写

2)selenium和Junit都可以被导入到maven项目里面

3)先进行创建maven项目,导入相关依赖

4)selenium4==java8==junit5

5)官网:JUnit 5

org.seleniumhq.seleniumselenium-java4.0.0org.junit.jupiterjunit-jupiter5.8.2testorg.junit.platformjunit-platform-reporting1.8.2org.junit.platformjunit-platform-suite1.8.2test

一)Junit的注解:

1)@Test表示一个方法或者是一个用例

1.1)加上这个注解之后,就不需要再创建main函数进行创建在程序执行的入口了就可以让程序执行起来;

1.2)况且还可以单独的运行假设当前测试方法在其他的测试方法之后,那么我们通过main方法来顺序执行测试用例的时候,如果某一个方法挂了,那么后面的方法都没有办法再去执行了,就会造成测试用例的浪费

2)@BeforeEach,@BeforeAll

表示被@BeforeEach注解修饰的方法应该在其他任何方法执行之前都要执行一遍,无论是所有方法一起执行,还是每一个方法单独执行;

表示被@BeforeAll注解修饰的方法应该在其他方法所有一个方法执行之前只需要执行一遍就可以了,使用@BeforeAll注解修饰的方法必须是静态方法

1)下面是我们点击全部运行之后,@BeforeAll修饰的方法只是执行一次

2)但是当每一个Test方法运行之前也是都需要执行一次@BeforeAll修饰的方法

3)@BeforeAll和@Test联合修饰起来的方法不能单独运行

 

如果当前所有方法都进行运行,那么当所有方法运行完成之前@BeforeAll只会执行一次

如果单个的运行每一个方法,那么在每一个方法执行完成之后都会执行一次@BeforeAll方法

3)@AfterEach和@AfterAll注解

1)@AfterAll方法:

1.1)被@AfterAll修饰的方法必须也是静态方法

1.2)被@AfterAll和@Test来联合修饰的方法不能单独运行

1.3)被@AfterAll修饰的方法

1.4)如果当前所有方法都进行运行,那么当所有方法运行完成之后@After只会执行一次

1.4)如果单个的运行每一个方法那么在每一个方法执行完成之后都会执行一次@AfterAll方法

2)@AfterEach方法

表示被@AfterEach注解修饰的方法应该在其他任何方法执行之后都要执行一遍,无论是所有方法一起执行,还是每一个方法单独执行;

3)@Disabled :表示测试类或测试方法不执行 

4)@Timeout :表示测试方法运行如果超过了指定时间将会返回错误,里面的参数默认是秒

 5)@DisplayName :为测试类或者测试方法设置展示名称,就是一个标识

6)@ParameterizedTest :表示方法是参数化测试,搭配与@ValueSource或者@CsvSource注解来进行使用

6.1)String类型参数

public class TestBaiDu {@ParameterizedTest@ValueSource(strings={"abc","def"})public void run(String s){System.out.println(s);}
}

6.2)针对int类型的参数来说

 

 二)断言

写自动化测试,结果要么是成功的,要么是失败的,我们就需要使用断言来进行判断自动化测试的结果是否符合我们的预期

1)AssertEqual(expect,actual),进行校验实际的值和预期的值是否匹配相等;

 ChromeDriver driver=new ChromeDriver();//1.测试百度首页展示元素是否正确@Testvoid Test_BaiDu1(){//1.先进行跳转到百度界面driver.get("http://www.baidu.com");//2.检测百度输入框中的按钮展示文字是否合理String message=driver.findElement(By.cssSelector("#su")).getAttribute("value");Assertions.assertEquals(message,"百度一下");//如果测试不通过,就会打印预期结果和实际结果之间的区别}

2)AssertNotEqual(expect,actual),进行校验实际的值和预期的值是否不相等不匹配;

3)AssertTrue(里面传递的是Boolean类型表达式)

4)AssertFalse(参数)

这里面的参数的值要么是True要么是False,参数就是Boolean类型

  ChromeDriver driver=new ChromeDriver();//1.测试百度首页展示元素是否正确@Testvoid Test_BaiDu1(){//1.先进行跳转到百度界面driver.get("http://www.baidu.com");//2.检测百度输入框中的标题是否正确String message=driver.getTitle();Assertions.assertTrue(message.equals("百度一下,你就知道"));//如果测试不通过,就会打印预期结果和实际结果之间的区别}

5)AssertNull()

6)AssertNotNull()

 @Testvoid Test(){String str1=null;String str2="abc";Assertions.assertNull(str1);Assertions.assertNotNull(str2);}

三)用例的执行顺序

一)为什么要用junit里面的排序方法呢?

1)junit的默认执行顺序是不确定的,官方文档并没有给出一个明确的执行顺序

2)假设说如果用例之间存在着关联关系,没有进行解耦合,前一个方法中的用例就会关联影响到后一个用例的执行,就需要手动的指定的执行顺序

二)测试用例之间都存在着这样的一个关联关系吗?

1)在编写测试用例的时候要保证用例之间的一个独立性,尽量解耦合,比如说上一个用例执行的一个结果,从页面上获取了一个元素;

2)那么这个元素可能会作为下一个方法中用例的参数的输入,耦合性很低,也就是说我们要使用这个参数来继续执行下一个方法;

3)尽量保持用例之间的独立性

但是我们仍然可以使用junit里面提供的方法来进行手动的设置用例的执行顺序

1)@TestMethodOrder(MethodOrderer.OrderAnnotation.class)用来修饰类,标识当前类使用方法来进行排序

2)每一个方法加上的@order注解表示明确标注各个方法的执行顺序

最后可以从程序的执行结果来进行观察

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class TestBaiDu {@Test@Order(1)public void start(){System.out.println("aaa");}@Test@Order(3)public void run(){System.out.println("bbb");}@Test@Order(2)public void sum(){System.out.println("ccc");}@Test@Order(4)public void sub(){System.out.println("ddd");}
}

四)测试套件

测试套件就是将我们所有的指定的用例都来进行执行

1)选择指定类添加到套件里面来执行

加上@Suite和@SelectClasses({类名.class,类名.class})

1.1)测试类名称必须以Test或Tests结尾,例如UserMgmtTests,DeviceMgmtTest等

1.2)我们的用例必须要加上@Test注解

//这是一个测试套件,将我们所有的用例都来执行起来
@Suite
@SelectClasses({AutoTest1.class, AutoTest2.class})
public class TestSuite {
}

2)选择指定的包添加到套件中执行

1)在这里仍然使用的是@Suite注解和@SelectClasses注解将包添加到测试套件里面,执行包下面的所以以Test命名的文件中的所有@Test注解的用例;

2)测试用例之间是保持着一个完备的独立性的,一个测试用例失败了不会影响到其他的测试用例的执行;

五)参数化 

相关内容

热门资讯

最新或2023(历届)大学秋... 最新或2023(历届)大学秋季运动会计划一、 活动布景xx师范大学第四十八届田径运动会将于10月27...
最新或2023(历届)党员三... 最新或2023(历届)党员三比三争活动计划为遵循镇润发〔最新或2023(历届)〕36号文件,对于展开...
最新或2023(历届)农委三... 农委三比三争活动计划全省农经农业系统展开春季农业出产效劳 深化推动“三解三促”活动施行计划 为悉数贯...
最新或2023(历届)孩童万圣... 最新或2023(历届)孩童万圣节活动策划计划一、规划目的:每年的10月31日是外国的万圣节,这是他们...
最新或2023(历届)公司万圣... 最新或2023(历届)公司万圣节活动策划计划(1)万圣节相关内容的场内宣扬(2)喷绘3副(门口、活动...
最新或2023(历届)中学秋季... 最新或2023(历届)中学秋季运动会活动计划一、 运动会前期预备作业首先在学生会首次整体例会上对整体...
最新或2023(历届)中秋节... 一、目的:我们都知道中秋节是中国传统的节日,我们想知道更多的关于中国的中秋节的传统节日之一,努力去体...
最新或2023(历届)妇联三比... 环绕筠连县委、县政府展开的“三办理三激起三添加”主题实习活动,筠连县妇联活跃展开“三亮三比三争”活动...
最新或2023(历届)南京三... 近来,南京分公司党委联络公司实习,在“两学一做”学习教育中安排展开党员“三亮三比三争”主题实习活动,...
最新或2023(历届)三比三... 广大党员要紧扣“五查摆五处理五强化”,农村党员重点在带领大众致富、保护调和安稳、宏扬文明新风等方面作...
最新或2023(历届)社区三比... 社区三比三争活动计划为深化执行区委八届九次整体(扩大)会议精力,深化展开抢先创优活动,进一步进步政协...
银行干部入党申请书范文 入党转... 敬爱的党组织:我怀着十分激动的心情向党组织提出申请我志愿加人中国共产党,愿意为共产主义而奋斗终身。中...
最新或2023(历届)践行底层... 为做好镇党委换届推举作业,依照《中国共产党规章》、《中国共产党底层安排推举作业暂行法令》的有关规则及...
为什么说三国时期的战争不比战国... 为什么说三国时期的战争不比战国时期?战争规模越变越小的原因是什么?趣历史小编带来详细的文章供大家参考...
刘邦为什么要与匈奴和亲?刘邦被... 刘邦为什么要与匈奴和亲?刘邦被困白登山是间接原因 ?趣历史小编带来详细的文章供大家参考。刚好曾经劝刘...
“笞杖&rdquo... “笞杖”是什么刑罚?古代女子为何宁死也不愿受笞杖之刑?感兴趣的读者可以跟着小编一起看一看。古时候的统...
刘邦为什么要反项羽?西楚霸王分... 刘邦为什么要反项羽?西楚霸王分封导致天下大乱!下面趣历史小编就为大家带来详细介绍,接着往下看吧~前2...
西晋王朝存在的时间为什么会如此... 西晋王朝为什么会如此短暂,这是很多读者都比较关心的问题,接下来就和各位读者一起来了解,给大家一个参考...
历史不知所踪的4位名人,消失不... 历史不知所踪的4位名人,消失不见令人困惑!趣历史小编给大家提供详细的相关内容。中国上下历经五千年历史...
西晋王朝存在的时间为什么会如此... 西晋王朝为什么会如此短暂,这是很多读者都比较关心的问题,接下来就和各位读者一起来了解,给大家一个参考...