首页 > 其他分享 >Junit单元测试—Maven

Junit单元测试—Maven

时间:2024-10-17 18:23:17浏览次数:8  
标签:单元测试 junit Maven public jupiter org Test import Junit

JUnit 单元测试常用注解

测试顺序大概流程

//第一步: 创建测试类, 测试类的类名一般是:   被测试类类名 + Test
public class MathUtilsTest {
    /*
        第二步: 为了保证每个方法独立, 为测试的每个方法单独创建测试方法
        测试方法要求(规格):
            (1) 不能有参数
            (2) 不能返回值
            (3) 方法名建议:  test+被测试的方法(遵循驼峰命名规范)
            (4) 修饰符必须是public
     */

    // 第三步: 为了保证每个测试方法都能够独立运行,需要加上一个注解@Test

    /*
     @Test : 可以让测试方法独立运行  (核心注解)
     @Before(@BeforeEach): 在每个测试方法运行之前都运行一次
     @After(@AfterEach): 在每个测试方法运行之后都运行一次
     @BeforeClass(@BeforeAll): 在类加载的时候走一次(该注解修饰的测试方法必须是静态方法)
     @AfterClass(@AfterAll) : 在所有的测试方法走完之后走一次(同样只能修饰静态方法 就是静态代码块)

     总结:
        使用步骤:
            (1) 导包
            (2) 创建测试类:
                    类名要求: 要测试的类+Test
            (3) 在测试类中定义测试方法
                    方法要求:
                        (1) 没有返回值, 没有参数
                        (2) 权限修饰符必须是public
                        (3) 方法名要求:test+要被测试的方法名
            (4) 抗上@Test即可
    优点:
        (1) 每个方法测试都单独测试互不影响
        (2) 自动化测试
        (3) 能够生成测试报告
        (4) 还可以断言Assert
 */
  /*
      断言:所谓断言:意思是程序员可以预测程序的运行结果,检查程序的运行结果是否与预期一致。
      由junit的Asset工具类实现
          eg: Assset.assrtEquals("提示消息",预期目标,实际结果);
  */
}

JUnit 是 Java 中最常用的单元测试框架,以下是一些常用的注解及其用法示例。

1. @Test

  • 用途:标识一个方法为测试方法。

  • 示例

    import org.junit.jupiter.api.Test;
    import static org.junit.jupiter.api.Assertions.assertEquals;
    
    public class MathUtilsTest {
    
        @Test
        public void testAdd() {
            MathUtils mathUtils = new MathUtils();
            int result = mathUtils.add(2, 3);
            assertEquals(5, result, "2 + 3 应该等于 5");
        }
    }
    

2. @BeforeEach

  • 用途:在每个测试方法执行之前运行的方法,通常用于设置测试环境。

  • 示例

    import org.junit.jupiter.api.BeforeEach;
    import org.junit.jupiter.api.Test;
    
    public class MathUtilsTest {
    
        private MathUtils mathUtils;
    
        @BeforeEach
        public void setUp() {
            mathUtils = new MathUtils(); // 每个测试前创建新的 MathUtils 实例
        }
    
        @Test
        public void testAdd() {
            assertEquals(5, mathUtils.add(2, 3));
        }
    }
    

3. @AfterEach

  • 用途:在每个测试方法执行之后运行的方法,通常用于清理测试环境。

  • 示例

    import org.junit.jupiter.api.AfterEach;
    import org.junit.jupiter.api.Test;
    
    public class MathUtilsTest {
    
        @AfterEach
        public void tearDown() {
            // 清理操作,例如关闭连接、释放资源等
        }
    
        @Test
        public void testAdd() {
            // 测试逻辑
        }
    }
    

4. @BeforeAll

  • 用途:在所有测试方法执行之前运行的方法,适用于静态方法,通常用于一些昂贵的设置操作。

  • 示例

    import org.junit.jupiter.api.BeforeAll;
    import org.junit.jupiter.api.Test;
    
    public class MathUtilsTest {
    
        @BeforeAll
        public static void init() {
            // 进行全局的设置操作,例如加载配置
        }
    
        @Test
        public void testAdd() {
            // 测试逻辑
        }
    }
    

5. @AfterAll

  • 用途:在所有测试方法执行之后运行的方法,适用于静态方法,通常用于清理全局资源。

  • 示例

    import org.junit.jupiter.api.AfterAll;
    import org.junit.jupiter.api.BeforeAll;
    import org.junit.jupiter.api.Test;
    
    public class MathUtilsTest {
    
        @BeforeAll
        public static void init() {
            // 全局设置
        }
    
        @AfterAll
        public static void cleanUp() {
            // 清理全局资源
        }
    
        @Test
        public void testAdd() {
            // 测试逻辑
        }
    }
    

6. @Disabled

  • 用途:标识一个测试方法(或类)为禁用,JUnit 不会执行该测试。

  • 示例

    import org.junit.jupiter.api.Disabled;
    import org.junit.jupiter.api.Test;
    
    public class MathUtilsTest {
    
        @Disabled("此测试暂时禁用")
        @Test
        public void testAdd() {
            // 此测试不会被执行
        }
    }
    

7. @ParameterizedTest

  • 用途:用于参数化测试,允许用不同的参数运行同一个测试方法。

  • 示例

    import org.junit.jupiter.params.ParameterizedTest;
    import org.junit.jupiter.params.provider.CsvSource;
    
    public class MathUtilsTest {
    
        @ParameterizedTest
        @CsvSource({
            "1, 2, 3",
            "2, 3, 5",
            "4, 5, 9"
        })
        public void testAdd(int a, int b, int expected) {
            MathUtils mathUtils = new MathUtils();
            assertEquals(expected, mathUtils.add(a, b));
        }
    }
    

8. @Nested

  • 用途:用于组织测试,允许将测试分组在一起,便于维护和可读性。

  • 示例

    import org.junit.jupiter.api.Nested;
    import org.junit.jupiter.api.Test;
    
    public class MathUtilsTest {
    
        @Nested
        class AddTests {
            
            @Test
            public void testAddPositiveNumbers() {
                MathUtils mathUtils = new MathUtils();
                assertEquals(5, mathUtils.add(2, 3));
            }
    
            @Test
            public void testAddNegativeNumbers() {
                MathUtils mathUtils = new MathUtils();
                assertEquals(-5, mathUtils.add(-2, -3));
            }
        }
    }
    

9. @DisplayName

  • 用途:用于设置测试方法名,便于针对性测试
  • 示例

断言判断:Assertions.assertEquals("预期值","实际值",提示信息)

标签:单元测试,junit,Maven,public,jupiter,org,Test,import,Junit
From: https://www.cnblogs.com/promiseforyou/p/18472853

相关文章

  • 【C#】单元测试入门(XUnit 测试框架)
     本文示例环境VisualStudio2019XUnit 2.9.2单元测试框架xunit.runner.visualstudio2.2.0测试运行工具为什么要写单元测试 一个项目中,可能比较庞大。所以,使用测试,可以减少耦合,提升代码的质量。也可以让后续开发人员,快速了解代码。至于不写测试代码的原因有很多:比如......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-2-环境准备与搭建-基于Maven(详细
    1.简介上一篇宏哥已经讲解和分享了如何通过引入jar包来搭建Java+Playwright自动化测试环境,这一种是比较老的方法,说白了就是过时的老古董,但是我们必须了解和知道,其实maven搭建无非也就是下载引入相关的jar包,只不过相比之下是简单方便了,了解其本质可以帮助我们更好的学习maven搭建......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-2-环境准备与搭建-基于Maven(详细
    1.简介上一篇宏哥已经讲解和分享了如何通过引入jar包来搭建Java+Playwright自动化测试环境,这一种是比较老的方法,说白了就是过时的老古董,但是我们必须了解和知道,其实maven搭建无非也就是下载引入相关的jar包,只不过相比之下是简单方便了,了解其本质可以帮助我们更好的学习maven搭建......
  • Maven高级
    1.分模块设计与开发1.1介绍所谓分模块设计,顾名思义指的就是我们在设计一个Java项目的时候,将一个Java项目拆分成多个模块进行开发。如果不分模块,回有两点问题:不方便项目的维护和管理、项目中的通用组件难以复用。分模块设计就是将项目按照......
  • Idea-Maven的Setting文件盘配置
    目录1.Setting.xml2.Setting.xml选其中之一就行。直接全部复制就行。1.Setting.xml<?xmlversion="1.0"encoding="UTF-8"?><!--LicensedtotheApacheSoftwareFoundation(ASF)underoneormorecontributorlicenseagreements.SeetheNOTI......
  • 【Linux】【Jenkins】后端maven项目打包教程-Linux版
    本次安装版本:2.4+jenkins详细安装教程1、安装git环境2、安装mavne环境2.1下载依赖2.2、解压、赋权2.2、配置环境变量2.3、验证安装3、jenkins-插件下载3.1、进入jenkins-->系统管理3.2、进入系统管理-->插件管理3.3、下载==两个==插件(如果之前下载了,这里是搜索不到的,请......
  • IDEA配置maven主目录(maven home)不生效
    原文链接:IDEA配置maven主目录(mavenhome)不生效–每天进步一点点(longkui.site)0.背景使用IDEA搭建SpringBoot项目,搭建完成后开始报错,报错信息如下:java.lang.RuntimeException:java.lang.RuntimeException:org.codehaus.plexus.component.repository.exception.Component......
  • IDEA如何用maven打包(界面和命令两种方式)
    前言我们在使用IDEA开发时,如果是springboot项目的话,一般是用maven来管理我们的依赖的。然后,当我们开发完成之后,就需要打包部署了。 那么,我们应该如何打包呢?如何打包(jar包)首先,我们点击右侧的maven侧边栏,然后点击里面的【clean】,先将以前的包清理掉。然后,我们等待clean完成......
  • maven升级(最该注意的是别忘了修改环境)
    解决方法第一步:从官网下载新版本Maven、并解压官网地址:https://maven.apache.org/第二步:修改settings.xml配置1️⃣修改本地仓库的位置:原来低版本的仓库位置即可2️⃣修改下载方式(阿里云服务器)<!--阿里云仓库--><mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf>......
  • 解决 Maven 插件报错:The plugin org.codehaus.mojo:flatten-maven-plugin:1.5.0 requi
    检查Maven版本:首先,确认当前使用的Maven版本是否与插件要求的版本一致。可以通过在命令行中输入 mvn-v 来查看当前Maven的版本信息。升级或降级Maven版本:如果当前Maven版本过低,需要升级到插件要求的版本;如果过高,可能需要降级。升级或降级Maven可以参考Maven的官......