Junit测试框架

简介: Junit测试框架

一、简介

Junit框架是一个开源的Java语言单元测试框架,Java方向使用最广泛的单元测试框架,使用Java开发者都应该学习Junit并能掌握单元测试的编写。

对于Junit和Selenium的关系:通俗点来说Selenium如果比喻为灯泡,那么Junit就是电源。

二、常见使用方法

注解

在Junit框架中使用注解可以实现单元测试。

@Test

在方法前加上@Test注解就不用编写main方法,是直接可以运行该方法的。

@Test
public  void test01(){
   System.out.println("简单测试");
}

@BeforeEach

在方法前加上BeforeEach表示在每执行一个测试方法之前,都要执行该方法一次。

    @Test
    public  void test01(){
        System.out.println("简单测试");
    }
    @Test
    public  void test02(){
        System.out.println("简单测试2");
    }
    @BeforeEach
    public  void test00(){
        System.out.println("测试");
    }

@BeforeAll

在方法前加上BeforeEach表示在每执行测试之前都会执行该测试方法,但只执行一次,该方法必须用static修饰

    @org.junit.jupiter.api.Test
    public  void test01(){
        System.out.println("简单测试");
    }
    @org.junit.jupiter.api.Test
    public  void test02(){
        System.out.println("简单测试2");
    }
    @BeforeAll
    public  static void test00(){
        System.out.println("测试");
    }

 

@AfterEach:表示在每执行一个测试方法之前,都要执行该方法一次。

@AfterAll:表示在执行测试之后执行该方法一次,也要求是静态方法。

这两种注解与@BeforeEach和@BeforeAll用法相似,便不再进行演示。

断言

assertEquals和assertNotEquals

assertEquals:比较要测试的是否与预期的一致。

assertNotEquals:比较要测试的是否与预期的不一致。

    ChromeDriver driver = new ChromeDriver();
    @org.junit.jupiter.api.Test
    public void assertTest(){
        driver.get("https://www.baidu.com");
        String str = driver.findElement(By.xpath("//*[@id=\"su\"]")).getAttribute("value");
        Assertions.assertEquals("百度一下",str);
    }

assertTrue和assertFalse

参数为布尔表达式用于判断真假。

assertTrue:参数中布尔表达式为真时,测试通过。

assertFalse:参数中布尔表达式为假时,测试通过。

    @org.junit.jupiter.api.Test
    public void assertTest(){
        driver.get("https://www.baidu.com");
        String str = driver.findElement(By.xpath("//*[@id=\"su\"]")).getAttribute("value");
        Assertions.assertTrue("百度一下".equals(str));
    }

assertNull 和assertNotNull

assertNull 和assertNotNull这两个方法来判断参数是否为空。

    @org.junit.jupiter.api.Test
    public void assertTest(){
        driver.get("https://www.baidu.com");
        String str = driver.findElement(By.xpath("//*[@id=\"su\"]")).getAttribute("value");
        Assertions.assertNotNull(str);
        driver.quit();
    }

测试用例的执行顺序

Junit的默认的执行顺序是不确定的,官方的用例并没有明确指出,如果测试之间有关联,这就需要使用Junit提供的方法来手动设置测试用例的执行顺序,在类前加上TestMethodOrder注解,标注当前类使用方法进行排序,在类中的方法前使用order注解注明顺序。

但是在编写测试用例时尽量保持其独立性。

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class Test {
    @org.junit.jupiter.api.Test
    @Order(1)
    public void test1(){
        System.out.println("测试1");
    }
    @org.junit.jupiter.api.Test
    @Order(2)
    public void test2(){
        System.out.println("测试2");
    }
    @org.junit.jupiter.api.Test
    @Order(3)
    public void test3(){
        System.out.println("测试3");
    }
}

测试套件

测试套件Suite,可以将指定文件添加到套件执行。可以使用@SelectClasses()注解,以及@SelectPackages()注解。

@Suite
@SelectClasses(Test.class)
public class AutoTest {
}

参数化

在测试方法中可以添加参数进行测试,使用@Parameterizedtest来标注方法类型为参数化,并且不需要再添加@Test注解,否则就会再多执行一次。

单参数

使用@ValueSource(类型={参数1,参数2……},在指明类型时需要使用原生类型,在基本数据类型之后加上s,例如:ints、floats。

    @ParameterizedTest
    @ValueSource(ints = {1,23,0,9})
    public void test1(int a){
        System.out.println(a);
    }

多参数

使用@CSVSource(Value={"小明,98","张三,100",……}

多参数之间默认使用,如果修改需要使用delimeterString指定分隔字符。

@ParameterizedTest
    @CsvSource(value = {"小明-100","刘洋-99"},delimiterString = "-")
    public void test2(String name,int score){
        System.out.println("姓名:"+name+" 成绩:"+score);
    }

当参数过多的话就可以使用文件进行处理,使用CSVFileSource注解

    @ParameterizedTest
    @CsvFileSource (files = "D:\\test.txt")
    public void test2(String name,int score){
        System.out.println("姓名:"+name+" 成绩:"+score);
    }

动态参数

单参数

使用@MethodSource()进行注解,参数为数据来源的方法名,如果不指定参数,就默认找跟用例同名的静态方法。

 @ParameterizedTest
    @MethodSource("dataSource")
    public void test0(String str){
        System.out.println(str);
    }
   public static Set<String> dataSource(){
       Set<String> set = new HashSet<>();
       set.add("小明,90");
       set.add("张强,98");
       set.add("王志,100");
       return set;
   }

多参数

@ParameterizedTest
    @MethodSource("dataSource")
    public void test0(String name,int score){
        System.out.println(name+":"+score);
    }
   public static Stream<Arguments> dataSource(){
        return Stream.of(Arguments.arguments("jim",90),Arguments.arguments("lucy",99));
   }

7ee0270c88e14ed7aa7f2d55fd3a1ded.png

目录
相关文章
|
5月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
3月前
|
SQL 安全 Linux
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
222 1
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
|
3月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
259 1
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
|
8月前
|
安全 Unix Linux
Metasploit Pro 4.22.7-2025050101 发布 - 专业渗透测试框架
Metasploit Pro 4.22.7-2025050101 发布 - 专业渗透测试框架
252 10
Metasploit Pro 4.22.7-2025050101 发布 - 专业渗透测试框架
|
9月前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.7-2025042101 发布 - 专业渗透测试框架
Metasploit Pro 4.22.7-2025042101 (Linux, Windows) - 专业渗透测试框架
253 5
Metasploit Pro 4.22.7-2025042101 发布 - 专业渗透测试框架
|
7月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
879 0
|
4月前
|
安全 Linux 网络安全
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
368 2
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
|
4月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
452 1
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
|
3月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
949 2
|
4月前
|
安全 Linux 网络安全
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
597 0