首页 > 其他分享 >Junit

Junit

时间:2023-09-15 23:11:06浏览次数:37  
标签:void System public println Junit 测试方法 out

单元测试

就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试。

Junit的简单使用

  • 为需要测试的业务类定义对应的测试类
    • 每个业务方法,编写对应的测试方法(必须:公共public、无参无返回值void
    • 测试方法名推荐格式:test待测试方法名【首字母改为大写】
  • 测试方法上必须声明@Test注解
  • 然后在测试方法中,编写代码调用被测试的业务方法进行测试;
  • 如果测试通过则是绿色;如果测试失败,则是红色
  • IDEA中已经集成,可以单独运行一个测试方法,也可以运行所有

测试应该考虑极端情况

业务类

public class MyClass {
    public static void start() {
        System.out.println("开始计时");
    }

    public static int sum(int num) {
        int sum = 0;
        for (int i = 0; i <= num; i++) {
            sum += i;
        }
        return sum;
    }

    public int getLength(String s) { //这里并没有对s进行控制判断等,我们测试应该考虑空值的情况
        return s.length();
    }
}

测试类

public class MyClassTest {
    @Test
    public void testStart() {
        MyClass.start();
    }

    @Test
    public void testSum() {
        int sum = MyClass.sum(100);
        System.out.println(sum);
    }

    @Test
    public void testGetLength() {
        MyClass myClass = new MyClass();
        int length = myClass.getLength("12345");
        System.out.println(length);

        int length1 = myClass.getLength(null); //null测试
        System.out.println(length1);
    }
}

结果

  • 可以看到getLength空指针异常,接下来我们可以修改业务代码,增加null判断,再次测试即可

image-20230813195614302

Junit断言

问题描述

新增方法

     public static int getMaxIndex(String str) { //获取字符串所有长度
        if(str==null){
            return 0;
        }
        int indexLength = str.length(); //这里是有误的
        return indexLength;
    }

测试

    @Test
    public void testGetIndex() {
        System.out.println(MyClass.getMaxIndex(null));
        System.out.println(MyClass.getMaxIndex("01234"));
    }

测试结果

  • 虽然没有报错,但是结果是错误的,最大索引是4,但运行结果是5那怎么办?测不了吗?

image-20230813200907335

断言

期望值运行结果不一致就会错误

Assert.assertEquals(String 错误提示,期望值,运行值);

测试

    @Test
    public void testGetIndex() {
        int maxIndex = MyClass.getMaxIndex(null); //没处理的话,自己报空指针异常

        int maxIndex1 = MyClass.getMaxIndex("01234");
        Assert.assertEquals("有bug", 4, maxIndex1);
    }

结果

  • 修改业务方法后,再次测试即可

image-20230813201733063

Junit常用注解

junit4.*

注解 说明
@Test 测试类中的方法必须用它修饰才能成为测试方法,才能启动执行。
@Before 用来修饰一个实例方法,该方法会在每一个测试方法执行之前执行一次。
@After 用来修饰一个实例方法,该方法会在每一个测试方法执行之后执行一次。
@BeforeClass 用来修饰一个静态方法,该方法会在所有测试方法之前只执行一次。
@AfterClass 用来修饰一个静态方法,该方法会在所有测试方法之后只执行一次。

在测试方法执行执行的方法,常用于:初始化资源。【如Socket创建】

在测试方法执行完再执行的方法,常用于:释放资源。【如Socket关闭】

Junit改名而已

image-20230813202825315

public class MyClassTest {
    @BeforeClass
    public static void beforeClass() {
        System.out.println("执行@BeforeClass注解修饰的方法:在所有测试方法之前只执行一次");
    }

    @AfterClass
    public static void afterClass() {
        System.out.println("执行@AfterClass注解修饰的方法:在所有测试方法之后只执行一次");
    }

    @Before
    public void before() {
        System.out.println("执行@Before注解修饰的方法:在每一个测试方法执行之前执行一次");
    }

    @After
    public void after() {
        System.out.println("执行@After注解修饰的方法:在每一个测试方法执行之后执行一次");
    }

    @Test
    public void test1() {
        System.out.println("执行@Test注解修饰的方法:这是一个测试方法");
    }

    @Test
    public void test2() {
        System.out.println("执行@Test注解修饰的方法:这是另一个测试方法");
    }
}

image-20230813202651770

image-20230813202712936

标签:void,System,public,println,Junit,测试方法,out
From: https://www.cnblogs.com/SimpleWord/p/17706111.html

相关文章

  • spring整合junit中使用到的依赖以及简单的测试案例演示
    2023-09-07注意:spring整合junit中的依赖要和spring-context的依赖版本相一致<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>......
  • junit_demo
    参考:JUnit5单元测试框架的使用教程与简单实例_junit5使用_pan_junbiao的博客-CSDN博客Junit单元测试例子demo_twentyfour4ever的博客-CSDN博客 目录结构 pom.xml<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta......
  • CI+JUnit5并发单测机制创新实践
    一.现状·问题针对现如今高并发场景的业务系统,“并发问题”终归是必不可少的一类(占比接近10%),每次出现问题和事故后,需要耗费大量人力成本排查分析并修复。那如果能在事前尽可能避免岂不是很香?二.分析原因当前并发测试多数依赖测试人员进行脚本测试,同时还依赖了研发和产品识......
  • Junit4 TestSuite的使用
      1.新建测试类:1)FileManagerTest2)WhiteBoardTest2.新建测试套件类:AllTest@RunWith(Suite.class)@Suite.SuiteClasses({WhiteBoardTest.class,FileManagerTest.class})publicclassAllTest{}执行AllTest类,则AllTest类里面的WhiteBoardTest.class,FileManagerTest.class测试......
  • Junit - 如何测试List
    背景测试过程中,需要校验查询列表返回数据的正确性。常见的需求如:验证查询条件正确性:输入某查询条件,验证返回结果的List所有记录的该字段均为输入条件;验证数据正确性:验证查询结果中,某字段不能为空,某字段一定需要>0,某字段是个List,但是List的Size一定不为0;添加数据后,查询......
  • android 单元测试之 JUnit
    android里面做单元测试第一,JUnit。     实用范围:     东西,比如业务逻辑,数据封装,数值计算等等。并不能测试androidapi。第二,采用Instrumentation.Android单元测试的主入口是InstrumentationTestRunner。它相当于JUnit当中TestRunner的作用。你可以将Instrumentat......
  • springboot整合junit
       ......
  • springBoot——整合junit
    spring整合junit复习springBoot整合junitpackagecom.example.springboot_04;importcom.example.springboot_04.service.ServiceBook;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot......
  • Spring-Boot-19-Junit测试
    随着Spring开发的深入,我们逐渐打算使用Spring-test与Junit结合进行开发测试1.Jar形式的Maven依赖<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dep......
  • 3. SpringBoot整合junit
    1.回顾Spring整合junit‍@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=SpringConfig.class)publicclassUserServiceTest{@AutowiredprivateBookServicebookService;@TestpublicvoidtestSave(){bookS......