美文网首页
test-01-java 单元测试框架 junit 入门介绍

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

作者: 老马啸西风2020 | 来源:发表于2024-01-02 00:04 被阅读0次

    拓展阅读

    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 入门介绍

          本文链接:https://www.haomeiwen.com/subject/gmhpndtx.html