首页 > 编程语言 >Junit深入讲解(JAVA单元测试框架)

Junit深入讲解(JAVA单元测试框架)

时间:2024-03-30 10:31:26浏览次数:27  
标签:JAVA void 单元测试 System junit jupiter println Junit out

1、此处用的是Junit5,此处pom文件需要引的依赖是

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>
        <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-engine</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.9.1</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>
        <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>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.9.1</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.9.1</version>
        </dependency>

2、@Test注解(不需要main方法就可以执行)

import org.junit.jupiter.api.Test;

public class junit {
    @Test
    void Test(){
        System.out.println("这是一个测试用例");
    }
}

3、可以运行全部的也可以单独运行

4、@BeforeAll(前置动作,在所有代码前完成,只执行一次)@AfterAll(后置动作,在所有代码后完成,只执行一次)静态方法

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

public class junit {
    @Test
    void Test(){
        System.out.println("这是一个测试用例");
    }
    @Test
    void Test1(){
        System.out.println("这是二个测试用例");
    }
    @BeforeAll
    static void start(){
        System.out.println("******开始进行测试******");
    }
    @AfterAll
    static void end(){
        System.out.println("******结束测试******");
    }
}

5、@BeforeEach和@AfterEach,有几个方法执行几次,不是静态方法

import org.junit.jupiter.api.*;

public class junit {
    @Test
    void Test(){
        System.out.println("这是一个测试用例");
    }
    @Test
    void Test1(){
        System.out.println("这是二个测试用例");
    }
    @BeforeAll
    static void start(){
        System.out.println("******开始进行测试******");
    }
    @AfterAll
    static void end(){
        System.out.println("******结束测试******");
    }
    @BeforeEach
    void starteach(){
        System.out.println("******开始BeforeEach测试******");
    }
    @AfterEach
    void endeach(){
        System.out.println("******开始AfterEach测试******");
    }
}

6、指定执行顺序

import org.junit.jupiter.api.*;
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class junit {
   @Order(2)
    @Test
    void Test(){
        System.out.println("这是一个测试用例");
    }
   @Order(1)
    @Test
    void Test1(){
        System.out.println("这是二个测试用例");
    }
}

7、单参数(不能出现>1个参数,比如有了x就不能有y)只能接收一种类型的参数(参数化的不能加Test)

(1)各种类型

(2)int类型参数

 @ParameterizedTest
    @ValueSource(ints={1,2,3,4})
    void test2(int x){
       System.out.println("x的值为"+x);
    }

8、多参数

 @ParameterizedTest
    @CsvSource({"'张三',18"})
    void Test3(String name,int age){
       System.out.println(name+"今年"+age+"岁");
    }

9、多参数读取文件中的数据

(1)文件要创建在resources下面

(2)代码

  @ParameterizedTest
    @CsvFileSource(resources ="test01.csv")
    void Test4(String name,int age){
        System.out.println(name+"今年"+age+"岁");
    }

(3)文件内容以及运行结果

10、方法的形式获取参数

    public static Stream<Arguments> Generate(){
       return Stream.of(
              Arguments.arguments("张三",13),
              Arguments.arguments("李四",14)
       );
    }
    @ParameterizedTest
    @MethodSource("Generate")
    void Test6(String name,int age){
       System.out.println("姓名:"+name+"年龄"+age);
    }

11、测试套件

(1)通过class来测试,也可以同时运行多个class

@Suite
@SelectClasses({junit.class})
public class test {
}


@Suite
@SelectClasses({junit.class,junit1.class})
public class test {
}

(2)通过包运行

@Suite
@SelectPackages(value = {"example"})
public class test {
}

标签:JAVA,void,单元测试,System,junit,jupiter,println,Junit,out
From: https://blog.csdn.net/m0_69134284/article/details/137151853

相关文章

  • Java IO面试题(四)
    ###1.Netty中的事件循环模型是如何实现异步非阻塞IO的?Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。它主要基于JavaNIO(非阻塞IO)构建,但提供了更高级的抽象和工具,使得开发者能够更容易地编写出高效且易于维护的网络应用......
  • Java IO面试题(五)
    1.什么是Java的AsynchronousServerSocketChannel?与ServerSocketChannel相比有何优势?Java的AsynchronousServerSocketChannel是一个面向流的侦听套接字的异步通道,用于处理网络I/O操作。它是JavaNIO2.0(也称为NewI/O)的一部分,提供了异步非阻塞的I/O操作。AsynchronousServ......
  • java毕业设计基于微信小程序的智能推荐点餐系统[附源码]
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义标题:基于微信小程序的智能推荐点餐系统在数字化时代,餐饮行业正经历着一场由技术驱动的变革。随着智能手机和移动互联网的普及,消费者对餐饮服务的期望不断提高,他们......
  • Java面试必问题22:如何创建线程池(偏重点)&&创建线程池的注意事项
    企业最佳实践:不要使用Executors直接创建线程池,会出现OOM问题,要使用ThreadPoolExecutor构造方法创建,引用自《阿里巴巴开发手册》【强制】线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽......
  • Java面试必问题21:线程池核心参数
    publicThreadPoolExecutor(intcorePoolSize,                        intmaximumPoolSize,                        longkeepAliveTime,                        TimeUnitunit,        ......
  • 基于Java+Springboot框架自习室教室座位预约系统设计与实现
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......
  • Java static(1)
    类变量与类一起加载一次,在内存中保留一份,可以被类和所有的对象共享。实例变量实例变量属于对象,每个对象都有一份,只能被对象访问。publicclassTestStatic{publicstaticvoidmain(String[]args){Student1.name="张三";Student1student1......
  • java Web洗衣店管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc
    一、源码特点   JSP洗衣店管理系统是一套完善的web设计系统,对理解JSPjava编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。javaWeb洗衣店管理系统二、功能介绍(......
  • java Web 疫苗预约管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc
    一、源码特点   JSP疫苗预约管理系统是一套完善的web设计系统,对理解JSPjava编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。javaWeb疫苗预约管理系统二、功能介......
  • [附源码]JAVA计算机毕业设计大学生心灵氧吧(源码+开题)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着社会的快速发展,大学生面临着日益严峻的学习、就业和人际关系等多重压力。这些压力往往导致大学生出现焦虑、抑郁等心理问题,严重影响其身心健康和......