selenium自动化测试之Junit

1. 常用的注解

将junit的索引添加到pom文件:

java 复制代码
   <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.9.1</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.9.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.9.1</version>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.9.1</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.9.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>

文件讲解:

1.1. @Test

使用该注解表示当前方法是一个测试用例;

使用@Test注解的代码如下所示:

java 复制代码
public class JunitTest {
    @Test 
    void  Test01() {
        System.out.println("-------这是第一个测试用例---------");
    }
    @Test
    void  Test02() {
        System.out.println("-------这是第二个测试用例---------");
    }
}

运行测试用例之后的结果如下:

1.2. @BeforeAll,@AfterAll

java 复制代码
public class JunitTest {
    @Test
    void  Test01() {
        System.out.println("-------这是第一个测试用例---------");
    }
    @Test
    void  Test02() {
        System.out.println("-------这是第二个测试用例---------");
    }
    @BeforeAll
    static void Start(){
        System.out.println("------------开始测试------------");
    }
    @AfterAll
    static void End(){
        System.out.println("------------结束测试------------");
    }
}

测试用例结果如下所示:

beforeAll在Test修饰的方法之前运行,AfterAll在Test修饰方法之后运行;

1.3. @BeforeEach,@AfterEach

java 复制代码
public class JunitTest {
    @Test
    void  Test01() {
        System.out.println("-------这是第一个测试用例---------");
    }
    @Test
    void  Test02() {
        System.out.println("-------这是第二个测试用例---------");
    }
    @BeforeEach
    void Startv1(){
        System.out.println("------------开始执行一条测试用例------------");
    }
    @AfterEach
     void Endv1(){
        System.out.println("------------一条测试用例执行结束------------");
    }
}

测试结果如下:

我们在进行测试的时候,如果每一个测试用例在测试开始和结束之后都需要进行操作,就要使用@xxxeach的注解;如果测试的时候所有的测试用例在开始和结束之后只需要进行一次操作。就使用@xxxall的注解;

2. 测试用例顺序指定

指定顺序的注解如下所示:

java 复制代码
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JunitTest {
    @Order(2)
    @Test
    void  Test01() {
        System.out.println("-------这是第一个测试用例---------");
    }
    @Order(1)
    @Test
    void  Test02() {
        System.out.println("-------这是第二个测试用例---------");
    }
    @BeforeEach
    void Startv1(){
        System.out.println("------------开始执行一条测试用例------------");
    }
    @AfterEach
     void Endv1(){
        System.out.println("------------一条测试用例执行结束------------");
    }
}

我们要在类名和方法名前分别添加相对应的注解;

测试结果如下所示:

3. 参数化

3.1 单参数

java 复制代码
   //单参数
    @ParameterizedTest
    @ValueSource(ints = {1,2,3,4})
    void Test03(int x){
        System.out.println("接收的参数是x + "+ x);
    }

测试结果如下所示:

单参数的局限性: 只能接受一种类型的参数,对应的test03()方法只能接受一个参数x;

3.2 多参数

java 复制代码
  //多参数
    @ParameterizedTest
    @CsvSource({"'沈梦瑶',22"})
    void Test04(String name,int age){
        System.out.println(name + "今年" + age + "岁");
    }

测试结果如下所示:

注意事项:当写了上面代码中的两个注解之后,如果在写@test注解,我们的测试用例在运行的过程中就会报错,显示没有参数被注册;主要是因为@test注解的存在导致多参数注解在调用时被忽略;

错误代码和结果如下所示:

java 复制代码
    //多参数
    @Test
    @ParameterizedTest
    @CsvSource({"'沈梦瑶',22"})
    void Test04(String name,int age){
        System.out.println(name + "今年" + age + "岁");
    }

其结果如下所示:

多参数读取文件中的数据,并进行操作;建议将文件创建到resource中,如下所示:

代码如下:

java 复制代码
 // 多参数,读取文件中的数据,进行操作
    @ParameterizedTest
    @CsvFileSource(resources = "test01.csv")
    void Test05(String name, int age) {
        System.out.println("name:" + name + ", age:" + age);
    }

测试结果如下:

3.3 通过方法生成参数

java 复制代码
  public static Stream<Arguments> Generate() {
        return Stream.of(Arguments.arguments("沈梦瑶",22),
                Arguments.arguments("袁一琦",18));
    }

    // 通过方法生成测试数据
    @ParameterizedTest
    @MethodSource("Generate")
    void Test06(String name, int age) {
        System.out.println("姓名:" + name + "年龄:" + age);
    }

测试结果如下所示:

4. 测试套件管理

@suite

java 复制代码
@Suite
//通过class运行测试用例
@SelectClasses({JunitTest1.class,JunitTest.class})
//通过包运行测试用例
@SelectPackages(value = {"example"})
public class RunTest {
}

结果如下:

ps:本次的内容就到这里了,如果对你有所帮助的话就请一键三连哦!!!

封面截图来自刘姝贤的毕业公演的pv;

url:【流水线的流水账】江西几日游_哔哩哔哩_bilibili

相关推荐
晓晓hh3 小时前
JavaWeb学习——JUnit和日志
学习·junit·单元测试
qq_452396238 小时前
第十三篇:《UI自动化测试框架设计:整合TestNG/JUnit + Allure报告》
ui·junit
aLTttY1 天前
Spring Boot + Redis 实现接口防抖与限流实战指南
spring boot·redis·junit
以为你知道啊1 天前
mini-job极简分布式延迟任务队列 — 基于 Redis,支持 Cron 周期任务、异步协程和多执行器
redis·分布式·junit
胡利光2 天前
Harness Engineering 05|Safety & HITL Harness:边界、接管与回滚
junit
上海合宙LuatOS2 天前
LuatOS扩展库API——【xmodem】文件传输协议
物联网·junit·luatos
胡利光4 天前
Harness Engineering 02|Repo Harness:让仓库对 Agent 可读
java·junit·单元测试
上海合宙LuatOS5 天前
LuatOS扩展库API——【libnet】TCP/UDP协议
物联网·tcp/ip·junit·udp·luatos
上海合宙LuatOS6 天前
LuatOS扩展库API——【libfota】远程升级
物联网·junit·lua·luatos
上海合宙LuatOS6 天前
LuatOS扩展库API——【libfota2】远程升级
网络·物联网·junit·luatos