2.27 junit5常用语法

一.了解junit

junit是一个开源的java单元测试框架,java方向使用最广泛的单元测试框架.

所需要的依赖

<dependencies>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.0.0-alpha-7</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.8.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.8.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-reporting</artifactId>
            <version>1.8.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

二,注解

1.@Test表示

这是一个方法/一个用例

但是他的顺序是不固定的.我们需要指定顺序

2.@BeforeEach/@BeforeAll

@BeforeEach表示被注解的方法执行前都要执行一遍

注意只要@BeforeEach就行

否则就会先执行aaa然后因为需要先执行一遍aaa然后再执行一遍aaa再往下执行bbb

@BeforeAll:所有方法之前执行一次

注意:被BeforeAll需要用static方法

3.@AfterEach/@AfterAll

@AfterEach 其他方法执行后都要执行一遍

注意只有被ALL修饰的才要static 其他的都不能用static

@AfterALL同理

三.断言

写自动化测试要么是正确的要么是错误的,不能因为错误就停止所有程序,所以需要断言

junit提供了一组Assertions类来编写

1. Assertions.assertEquals(expect,actual)

校验期望值和实际值是否匹配

2.Assertions.assertNotEquals(Expect,actual)

检验是否不匹配

3.Assertions.assertTrue()/Assertions.assertFalse()

参数是表达式,结果是boolean类型

4.assertNull()/assertNotNull()

检验是否为空

四.用例执行顺序

juit的默认执行顺序是不确定的.官方文档没有明确指出

我们仍然可以使用junit里提供的方法来手动设置用例的方法

通过方法排序---通过-@order注解来排序

第一步.在类外标注当前类使用方法来进行排序

第二步在每个注解下标注顺序

如果被static修饰,就直接无视,没有排序了

无视原有的After Before

面试问题:为什么需要用到junit里的排序方法

junit里的方法有方法顺序排序,标签排序

首先会把方法的类定义在类外声明当前类类用方法进行排序

然后类里明确标注具体的执行顺序

如果用例之间存在关联关系,那么就需要手动指定用例的执行顺序

但是我们再编写测试用例的时候进行保持用例的独立性

五.测试套件suite

1.指定对应的的类 添加到套件执行

先创建一个专门的类来进行运行.把同一个包里要运行的类放在一起

注意:

包下必须有命名包含Test\tests的文件 并且有对应的执行注解,否则则会提示找不到对应的用例

2)指定包.添加到套件中执行

注定必须在同一个包下进行测试

六. 参数化

@Parameterizedtest 标注方法类型为参数化

不需要再添加@Test注解,如果添加了,则用例则会多执行一遍

1.单参数

@ValueSource(类型={参数1,参数2...})

其中的类型 对应原生类型,int->ints float->floats

2.多参数

@CsvSource

注意就算多个方法指定来源,都要同时用参数注解(@ParameterizedTest)注明

手动指定分隔符

用delimiterString

如果参数中含逗号,要么指定分隔符,要么就用单引号' ' 作为转义字符

3.指定文件路径.csv

如果参数非常多,在代码中编写不太好看.可以借助文件注入的方式来添加

@CsvSource(指定文件路径)

相对路径下 一定要在前加上 /

绝对路径不用加

4.动态参数

4.1单参数

@MathodSource("")参数为数据来源的方法名,如果不指定数据来源.则默认找用例同名的静态方法

提供数据的方法,返回值是Stream流

4.2多参数

返回多参树用Argurment类

七.执行屏幕截图

加路径的时候要加上要保存的名字

猜你喜欢

转载自blog.csdn.net/m0_72618437/article/details/129244249