test-01-java 单元测试框架 junit 入门介绍
拓展阅读
Auto generate mock data for java test.(便于 Java 测试自动生成对象信息)
Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。)
JUnit
JUnit 是一个用于编写可重复测试的简单框架。
它是 xUnit 架构的一种实例,专门用于单元测试框架。
What to test?
| Need | Desc |
|---|---|
| Right | 结果是否正确 |
| B | 边界条件是否满足 |
| I | 能反向关联吗 |
| C | 有其他手段交叉检查吗 |
| E | 是否可以强制异常发生 |
| P | 性能问题 |
maven 入门例子
maven 引入
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
方法
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
测试方法
import org.junit.Test;
import static org.junit.Assert.*;
public class CalculatorTest {
@Test
public void testAdd() {
// Arrange
Calculator calculator = new Calculator();
// Act
int result = calculator.add(3, 7);
// Assert
assertEquals(10, result);
}
}
CalculatorTest 类包含了一个测试方法 testAdd,用于测试 Calculator 类的 add 方法。
@Test 注解表示这是一个测试方法。
在测试方法中,我们首先创建了一个 Calculator 对象,然后调用 add 方法进行加法操作。
最后,使用 assertEquals 断言来验证计算的结果是否符合预期值。
运行测试类
在 IDE 中,通常有一个 "Run" 或 "Debug" 按钮,可以直接运行测试类。
也可以通过
mvn test
统一执行测试用例
验证结果
测试运行后,IDE 会显示测试结果。
如果测试通过,你将看到一个绿色的标志;如果测试失败,将会显示红色的标志,并且会提供详细的失败信息。
我们自己的测试例子
- 我们创建一个用于学生的测试类;
public class StudentTest extends TestCase {
public void testCreate() {
Student student = new Student("Mike");
}
}
- Student class
public class Student {
private String name;
public Student(String name) {
this.name = name;
}
public String getName() {
return "ryo";
}
public void setName(String name) {
this.name = name;
}
}
当我们运行 StudentTest 时,

接着,我们修改测试代码。
public class StudentTest extends TestCase {
public void testCreate() {
Student student = new Student("Mike");
String name = student.getName();
assertEquals("Mike", name);
}
}
result

Usage
- Add jars in IDEA
File --> Project Structure [crtl+alt+shift+s] --> Libraries --> "+"---> "Attach Files or Directories"
- setUp()
Now we add a new class Course.
public class Course {
private String name;
private int num;
public Course(String name, int num) {
this.name = name;
this.num = num;
}
public String getName() {
return name;
}
public int getNum() {
return num;
}
}
test class like this...
public class CourseTest extends TestCase {
public void testCreateNum() {
Course course = new Course("Math", 1);
assertEquals(1, course.getNum());
}
public void testCreateName() {
Course course = new Course("Math", 1);
assertEquals("Helo", course.getName());
}
}
Course course = new Course("Math", 1);
我们已经写了两次,有没有更简单的方法?
现在,我们可以使用 setUp() 来帮助我们更轻松地进行测试;setUp() 中的内容将在每个测试方法执行之前调用。
public class CourseTest extends TestCase {
private Course course;
public void setUp() {
course = new Course("Math", 1);
}
public void testCreateNum() {
assertEquals(1, course.getNum());
}
public void testCreateName() {
assertEquals("Helo", course.getName());
}
}
tearDown()此外,
tearDown()将在每个测试方法执行之后调用。@Before用
@Before注解的方法在每次测试之前执行;同样,@After在每次测试之后执行。@BeforeClass只运行一次,并且是唯一的。
test-01-java 单元测试框架 junit 入门介绍的更多相关文章
- Java单元测试框架 JUnit
Java单元测试框架 JUnit JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于KentBeck的sUnit的xUnit家族中为最成功的一 ...
- 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...
- 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字
084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...
- 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法
083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...
- 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法
082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...
- 走进JavaWeb技术世界11:单元测试框架Junit
JUnit你不知道的那些事儿 转自 老刘 码农翻身 2016-02-24 话说有一次Eric Gamma 坐飞机的时候偶遇Kent Beck(对,就是极限编程和TDD的发起人) , 两位大牛见面寒暄 ...
- JavaScript单元测试框架JsUnit基本介绍和使用
JavaScript单元测试框架JsUnit基本介绍和使用 XUnit framework XUnit是一套标准化的独立于语言的概念和结构集合,用于编写和运行单元测试(Unit tests). 每一个 ...
- 更好的 java 重试框架 sisyphus 入门简介
What is Sisyphus sisyphus 综合了 spring-retry 和 gauva-retrying 的优势,使用起来也非常灵活. 为什么选择这个名字 我觉得重试做的事情和西西弗斯很 ...
- Maven的安装配置及初次创建项目与java单元测试工具JUnit
Maven 安装 1.把maven安装包解压到某个位置 2.配置M2_HOME环境变量指向这个位置 3.在path环境变量中添加;%M2_HOME%\bin 配置镜像 国内的阿里云镜 ...
- Java 微服务框架 Redkale 入门介绍
Redkale 功能 Redkale虽然只有1.xM大小,但是麻雀虽小五脏俱全.既可作为服务器使用,也可当工具包使用.作为独立的工具包提供以下功能:1.convert包提供JSON的序列化和反序列化功 ...
随机推荐
- python3使用json、pickle和sqlite3持久化存储字典对象
技术背景 在各种python的项目中,我们时常要持久化的在系统中存储各式各样的python的数据结构,常用的比如字典等.尤其是在云服务类型中的python项目中,要持久化或者临时的在缓存中储存一些用户 ...
- SoC scan implementation
scan chain产生之前需要进行scan drc的过程,判断cell是不是能够串到scan chain上去 mux-d scan cell(是最常用的scan cell),还有其他的scan ce ...
- mysql-三元表达式函数-if
- 今天是个好日子,TaxCore(POS软件)备案指北
POS软件是什么?你好意思吗,还在用老掉牙的Winform. 关于POS 销售终端--POS(point of sale)是一种多功能终端,把它安装在信用卡的特约商户和受理网点中与计算机联成网络,就能 ...
- 【Kafka系列】(一)Kafka入门
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 系列文章地址 Kafka是什么? 一句话概括:Apache K ...
- [官网]微软服务器TLS的支持情况
https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-#tls-pro ...
- 浪潮CE3000F飞腾PC安装UOS/银河麒麟双系统的过程
浪潮CE3000F飞腾PC安装UOS/银河麒麟双系统的过程 背景 为了进行兼容性验证, 部门采购过一批浪费CE3000F的PC机器. 前期系统安装的是UOS, 但是有同事借走机器后重装了银河麒麟V10 ...
- [转帖]TiDB-merge region相关问题
一.开启region merge # 控制 Region Merge 的 size 上限,当 Region Size 大于指定值时 PD 不会将其与相邻的 Region 合并 pd-ctl confi ...
- [转贴]Python 中 -m 的典型用法、原理解析与发展演变
在命令行中使用 Python 时,它可以接收大约 20 个选项(option),语法格式如下: python [-bBdEhiIOqsSuvVWx?] [-c command | -m module- ...
- Core 文件的简单学习
背景 最近公司内经常出现jvm进程宕机的情况. 宕机之后没有产生jvm的dump文件.比如xxx.hprof 但是产生了 core.$pid的文件. 曾经在aarch64架构上宕机时曾经想学习一下co ...