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

相关推荐
Rhys..14 小时前
如何在Jenkins上查看Junit报告
servlet·junit·jenkins
2501_903238653 天前
深入理解 JUnit 的 @RunWith 注解与自定义 Runner
数据库·junit·sqlserver·个人开发
Rhys..4 天前
Jenkins上无法查看已成功生成的Junit报告
junit·sqlserver·jenkins
Rhys..4 天前
如何生成Junit报告
python·junit·jenkins
阿湯哥4 天前
Lua脚本核心语法介绍
开发语言·junit·lua
言慢行善7 天前
Junit——白盒测试
junit
刘一二7 天前
Spring单元测试(一)入门与实践
spring·junit·单元测试
不听话的小耳朵10 天前
2.7 静态方法/构造函数Mock
java·junit
不听话的小耳朵10 天前
2.5 动态属性注入
java·spring·junit
程序员谷美11 天前
JUnit 4与JUnit 5的差异详解
java·junit