前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础教程(16)-Java单元测试

Java基础教程(16)-Java单元测试

原创
作者头像
JQ实验室
发布2024-05-07 07:30:34
1230
发布2024-05-07 07:30:34
举报
文章被收录于专栏:java基础教程java基础教程

什么是单元测试

单元测试就是针对最小的功能单元编写测试代码。Java程序最小的功能单元是方法,因此,对Java程序进行单元测试就是针对单个Java方法的测试。

JUnit

JUnit是一个开源的Java语言的单元测试框架,专门针对Java设计,使用最广泛。JUnit是事实上的单元测试的标准框架;几乎所有的IDE工具都集成了JUnit;

一个JUnit测试包含若干 @Test 方法,并使用 Assertions 进行断言;

单元测试可以确保单个方法按照正确预期运行,如果修改了某个方法的代码,只需确保其对应的单元测试通过,即可认为改动正确。此外,测试代码本身就可以作为示例代码,用来演示如何调用该方法。 使用JUnit进行单元测试,我们可以使用断言( Assertion )来测试期望结果,可以方便地组织和运行测试,并方便地查看测试结果。此外,JUnit既可以直接在IDE中运行,也可以方便地集成到Maven这些自动化工具中运行。

在编写单元测试的时候,我们要遵循一定的规范:

  • 一是单元测试代码本身必须非常简单,能一下看明白,决不能再为测试代码编写测试;
  • 二是每个单元测试应当互相独立,不依赖运行的顺序;
  • 三是测试时不但要覆盖常用测试用例,还要特别注意测试边界条件,例如输入为 0 , null ,空字符串 "" 等情况

在IDEA中创建测试类:

  • 打开实现类,对着方法右键
  • 选go to找到test
  • 要勾选的选项,在勾选完需要测试的方法后,点击OK;
代码语言:java
复制
import static org.junit.jupiter.api.Assertions.*;

class BoxTest {

    @org.junit.jupiter.api.BeforeEach
    void setUp() {
    }

    @org.junit.jupiter.api.AfterEach
    void tearDown() {
    }

    @org.junit.jupiter.api.Test
    void getWh() {
    }
}

JUnit会把带有 @Test 的方法识别为测试方法; 标记为 @BeforeEach 和 @AfterEach 的方法,它们会在运行每个 @Test 方法前后自动运行;

JUnit还提供了 @BeforeAll 和 @AfterAll ,它们在运行所有@Test前后运行; @BeforeAll 和 @AfterAll 也只能标注在静态方法上;

  • 对于实例变量,在 @BeforeEach 中初始化,在 @AfterEach 中清理,它们在各个 @Test 方法中互不影响,因为是不同的实例;
  • 对于静态变量,在 @BeforeAll 中初始化,在 @AfterAll 中清理,它们在各个 @Test 方法中均是唯一实例,会影响各个 @Test 方法
其他注解

排出某些 @Test 方法,不要让它运行,这时,我们就可以给它标记一个 @Disabled;类似 @Disabled 这种注解就称为条件测试,JUnit根据不同的条件注解,决定是否运行当前的 @Test 方法;

为什么我们不直接注释掉 @Test ,而是要加一个 @Disabled ?这是因为注释掉 @Test ,JUnit就不知道这是个测试方法,而加上 @Disabled ,JUnit仍然识别出这是个测试方法,只是暂时不运 行。

JUnit提供了一个 @ParameterizedTest 注解,搭配@ValueSource,用来进行参数化测试。

参数化测试和普通测试稍微不同的地方在于,一个测试方法需要接收至少一个参数,然后,传入一组参数反复运行。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是单元测试
    • JUnit
      • 其他注解
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档