spring boot:为service类做参数化单元测试(spring boot 2.4.3)

一,演示项目的相关信息

1,地址:

     https://github.com/liuhongdi/servicetest

2,功能说明:演示给一个service生成测试文件

3,项目结构:如图:

说明:刘宏缔的架构森林是一个专注架构的博客,

网站:https://blog.imgtouch.com
本文: https://blog.imgtouch.com/index.php/2023/05/26/spring-boot-wei-service-lei-zuo-can-shu-hua-dan-yuan-ce-shi/

         对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

 

二,如何创建一个测试文件?

1,可以手动创建一个class文件

2,在intellij idea中可以快速创建一个test文件:

   打开一个service类,在类名上执行:  ctrl+shift+T

   然后从弹出的窗口中选择:

    Create New Test

   如图:

 

三,java代码说明

1,service/HelloService.java

复制代码
package com.servicetest.demo.service;

import org.springframework.stereotype.Service;

@Service
public class HelloService {

    public String sayHello(String name) {
        return "您好,"+name+"!";
    }

    public int addTwo(int first,int second) {
        return first+second;
    }
}
复制代码

 

2,service/HelloServiceTest.java

复制代码
package com.servicetest.demo.service;

import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest
@DisplayName("测试HelloService")
class HelloServiceTest {
    @Resource
    HelloService helloService;

    @BeforeAll
    static void initAll() {
        System.out.println("this is BeforeAll");
    }

    @AfterAll
    static void endAll() {
        System.out.println("this is AfterAll");
    }


    @BeforeEach
    public void initOne() {
        System.out.println("this is BeforeEach");
    }

    @AfterEach
    public void endOne() {
        System.out.println("this is AfterEach");
    }

    @Test
    @DisplayName("测试sayhello方法")
    void sayHello() {
        String hellostr = helloService.sayHello("老刘");
        assertThat(hellostr, equalTo("您好,老刘!"));
        assertThat(hellostr, hasLength(6));
        assertThat(hellostr, containsString("您好,"));
    }

    @ParameterizedTest
    @CsvSource({"1,2,3", "11,12,23", "33,100,133"})
    @DisplayName("参数化测试")
    void addTwo(int first,int second,int sum) {
        int rest = helloService.addTwo(first,second);
        assertThat(rest, equalTo(sum));
    }

}
复制代码

 

四,测试效果

 

 

五,查看spring boot的版本:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.3)

 

posted @   刘宏缔的架构森林  阅读(917)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2020-02-25 centos8安装sersync为rsync实现实时同步
2020-02-25 rsync安装使用中出现的报错
2020-02-25 centos8环境安装配置rsync
2020-02-25 nfs4使用中的防火墙配置
2020-02-25 centos8安装及配置nfs4
点击右上角即可分享
微信分享提示