test-01-java 单元测试框架 junit 入门介绍

人生乱弹 2年前 (2024) admin
9 0

拓展阅读
junit5 系列
基于 junit5 实现 junitperf 源码分析
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
只运行一次,并且是唯一的。

文章来源

版权声明:admin 发表于 2024年1月10日 pm3:35。
转载请注明:test-01-java 单元测试框架 junit 入门介绍 | 银库

相关文章

本站主题由 OneNav 一为主题强力驱动