JUnit 测试框架

注解

@test 注解

通过对方法加上 @test 注解,就可以直接运行方法进行测试:

@Test
void Test() {
    ChromeDriver driver = new ChromeDriver();
    driver.get("https://www.baidu.com");
    driver.findElement(By.cssSelector("#kw")).sendKeys("火锅");
    driver.quit();
}

@BeforeEach 注解

就是在执行其它测试方法之前,会先执行这个注解的方法:

@BeforeEach
void aaa() {
    System.out.println("aaa");
}

@Test
void bbb() {
    System.out.println("bbb");
}

@Test
void ccc() {
    System.out.println("ccc");
}

运行结果如下:
在这里插入图片描述

@BeforeAll

不过要注意的是 @BeforeAll 注解的方法必须是 static 的:

@BeforeAll
@Test
static void aaa() {
    System.out.println("aaa");
}

@Test
void bbb() {
    System.out.println("bbb");
}

@Test
void ccc() {
    System.out.println("ccc");
}

运行结果如下:
在这里插入图片描述

@ AfterEach

@AfterEach 注解就是在方法之后执行这个方法:

@AfterEach
void aaa() {
    System.out.println("aaa");
}

@Test
void bbb() {
    System.out.println("bbb");
}

@Test
void ccc() {
    System.out.println("ccc");
}

运行结果如下:
在这里插入图片描述

@AfterAll

@AfterAll 注解的作用是在所有测试方法后执行:

@AfterAll
static void aaa() {
    System.out.println("aaa");
}

@Test
void bbb() {
    System.out.println("bbb");
}

@Test
void ccc() {
    System.out.println("ccc");
}

运行结果如下:
在这里插入图片描述

断言

assertEquals

通过 Assertions.assertEquals 可以判断元素的 value 值与期望值相不相等:

@Test
public void test1() {
    //测试百度首页内容显示是否正确
    ChromeDriver driver = new ChromeDriver();
    //进入百度网站
    driver.get("https://www.baidu.com");
    String text = driver.findElement(By.cssSelector("#su")).getAttribute("value");
    Assertions.assertEquals("百度一下",text);
    driver.quit();
}

因为预期结果与实际结果是一样的,所以测试是可以通过的。

assertNotEquals

和 assertEquals 正好相反,也就是与期望值不一样的时候,可以通过:

@Test
public void test1() {
    //测试百度首页内容显示是否正确
    ChromeDriver driver = new ChromeDriver();
    //进入百度网站
    driver.get("https://www.baidu.com");
    String text = driver.findElement(By.cssSelector("#su")).getAttribute("value");
    Assertions.assertNotEquals("百度一下",text);
    driver.quit();
}

因为与期望值一样,所以这里是不通过的。

assertTrue

参数是一个表达式,如果表达式为真,就通过:

@Test
public void test1() {
    //测试百度首页内容显示是否正确
    ChromeDriver driver = new ChromeDriver();
    //进入百度网站
    driver.get("https://www.baidu.com");
    String text = driver.findElement(By.cssSelector("#su")).getAttribute("value");
    Assertions.assertTrue(text.equals("百度一下"));
    driver.quit();
}

用例执行顺序

通过 JUnit 里面提供的方法来手动设置用例的执行顺序。通过 @TestMethodOrder(MethodOrderer.OrderAnnotation.class) 方法排序来完成。不排序的时候:

public class AutoTest {
    @Test
    void aaa() {
        System.out.println("aaa");
    }
    @Test
    void bbbbb() {
        System.out.println("bbb");
    }
    @Test
    void cccc() {
        System.out.println("ccc");
    }
    @Test
    void dddddd() {
        System.out.println("ddd");
    }
}

运行结果如下:
在这里插入图片描述

排序的时候 通过 @Order 注解来进行排序,标注执行顺序:

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class AutoTest {
    @Test
    @Order(1)
    void aaa() {
        System.out.println("aaa");
    }
    @Test
    @Order(2)
    void bbbbb() {
        System.out.println("bbb");
    }
    @Test
    @Order(3)
    void cccc() {
        System.out.println("ccc");
    }
    @Test
    @Order(4)
    void dddddd() {
        System.out.println("ddd");
    }
}

运行结果如下:
在这里插入图片描述

测试套件

主要就是针对很多个测试类来进行测试,比如说要一次测试多个类,并且去进行测试。

指定类,添加到套件中并执行

适用于添加少量的几个类
在这里插入图片描述
通过 @Suite 来把多个类加在一起,就可以一次性进行测试了:

@Suite
@SelectClasses({AutoTest.class,AutoTest2.class})
public class RunAllSuite {

}

运行结果如下:
在这里插入图片描述

一次添加一个包的类

通过 @SelectPackages() 注解来实现一次添加一个包里面的测试类。不过要注意的是,测试类的名字,必须是以 Test 结尾的,否则不会进行测试:

@Suite
@SelectPackages("com.example.onlinemusic.autotest")
public class RunAllSuite {

}

运行结果如下:
在这里插入图片描述

参数化

单参数

对方法使用 @ParameterizedTest 注解就可以了,要配合 @ValueSource 来找到数据源:

@ParameterizedTest
@ValueSource(strings = {"火锅","辣条","螺蛳粉","面条"})
void test(String name) {
    System.out.println("name: "+name);
}

数据来源就是 ValueSource 里面的参数。运行结果如下:
在这里插入图片描述

多参数

通过 @CsvSource(value = ) 注解来实现,默认分隔符是 逗号:

@ParameterizedTest
@CsvSource(value = {"火锅,20","辣条,30","螺蛳粉,40","铁锅炖大鹅,50"})
void test(String name, int age) {
    System.out.println("name: "+name + " age: " + age);
}

运行结果如下:
在这里插入图片描述
也可以通过 delimiterString = 来指定分隔符。

借助文件

通过 @CsvFileSource(resources = ) 来读取文件,然后进行操作,指定文件路径为当前项目下 resources 目录下的 my.scv 文件:

@ParameterizedTest
@CsvFileSource(resources = "/my.csv")
void test(String name, int age) {
    System.out.println("name: "+name + " age: " + age);
}

动态参数

通过 @MethodSource() 注解来提供参数:

@ParameterizedTest
@MethodSource("test2")
void test1(String x) {
    System.out.println(x);
}
//定义提供数据的方法,可以是 Stream 流
static Stream<String> test2() {
    return Stream.of("火锅","辣条","螺蛳粉");
}

运行结果如下:
在这里插入图片描述

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lockey-s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值