SpringBoot开启测试用例

本文针对SpringBoot初学者,介绍了一种便捷的单元测试方法。通过在test文件夹下搭建与main对应的结构,并利用SpringBoot提供的spring-boot-starter-test依赖,结合JUnit进行单元测试。以UserService为例,展示了如何编写测试类并进行方法验证。

目标读者

1、Springboot初学者

2、小厂职场小白

1、关于测试

我最近发现一些刚刚参加工作的测试是软件质量保证的最佳办法,也是程序交付的最终环节,测试是一门学科,关于测试的方法有很多,在理论层面有黑河测试、白盒测试,在操作指导方面有边界值测试等等相关方法。相关的文章和书籍汗牛充栋,不胜枚举。由于本人不是专门的测试工程师,在此不做过多赘述。

2、存在问题

当前SpringBoot自动装配式框架使用非常广泛,但是初级程序员对于使用过程中的测试方法没有充分运用SpringBoot提供的便利,往往对于DAO和Service层的测试等controller编写完成后,通过swagger、postman等工具测试,经常导致测试不及时,讲具有问题的代码提交至git仓库。

3、本篇文章主要目的

介绍SpringBoot中的一种测试方法,可以针对已经完成的代码进行测试。

4、方法内容

(1)工程结构,在spring boot工程中,已经自动创建了test文件夹,在其中按照main中的包结构创建相应的包,然后对应相应的类,创建测试类。这种工程结构,便于维护。后续那个类需要测试,在test下的包中创建相应的测试类,测试类的名称与被测试类相同,添加Test后缀。

 (2)配置与测试代码编写

相关依赖,SprinBoot会自动添加spring-boot-starter-test依赖,而junit依赖需要手动添加

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
</dependency>
<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
</dependency>

编写代码(被测试类),被测试代码包含一个接口和一个实现类,实现类实现了接口的方法,为了演示方便,接口类是根据用户id,查询用户名,实现类直接返回用户名。

/**
 * @author admin
 */
public interface UserService {
    /**
     * 获取用户
     * @param id 用户id
     * @return 用户名
     */
    String findUserNameById(int id);
}
package com.example.testdemo.service.impl;

import com.example.testdemo.service.UserService;
import org.springframework.stereotype.Service;

/**
 * @author admin
 */
@Service
class UserServiceImpl implements UserService {
    @Override
    public String findUserNameById(int id) {
        return "张三"+id;
    }
}

 测试类,是我们本文重点介绍的内容,主要注意的是,需要三个注解

  • @RunWith(SpringRunner.class):是一个运行器,再此使用SpringRunner运行
  • @SpringBootTest:可以使用让测试类注入需要测试的接口方法
  • @Test:添加在测试方法上,表明这是一个测试方法

注意:测试方法命名跟被测试方法相同,后加Test后缀,测试方法必须是void的。

package com.example.testdemo.service.impl;


import com.example.testdemo.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
    @Autowired
    private UserService userService;

    @Test
    public void findUserNameByIdTest(){
        for (int i = 0; i < 5; i++) {
            String username = userService.findUserNameById(i);
            System.out.println(username);

        }
    }


}

测试结果

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天码村

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值