拓展阅读
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
只运行一次,并且是唯一的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-01-09 java 实现敏感词(sensitive word)工具详解使用说明