Spring Boot单元测试

什么是单元测试

是指对软件中的最小可测试单元进行检查和验证的过程。

单元测试的好处

  • 可以非常简单、直观、快速的测试某一个功能是否正确
  • 使用单元测试可以帮我们在打包的时候,发现一些问题,因为在打包之前,所有的单元测试必须通过,否则不能打包成功。
  • 使用单元测试,在测试功能的时候,可以不污染连接数据库,也可以不对数据库进行任何改变的情况下,测试功能。

单元测试的实现

准备工作:确认项目中已经内置了测试框架。(高版本的spring boot已经内置)
在这里插入图片描述

1.先生成单元测试的类
在这里插入图片描述

在这里插入图片描述
2. 配置单元测试的类添加@SpringBootTest注解,添加单元测试的业务代码

@SpringBootTest//表示当前单元测试运行在spring boot 环境中
class UserMapperTest {

    
    @Autowired //科学版的idea此行代码会报错
    private UserMapper userMapper;
    
    
    @Test
    void getUserById() {
       UserInfo userInfo= userMapper.getUserById(1);
        System.out.println(userInfo);
    }
}

断言

在这里插入图片描述

@SpringBootTest//表示当前单元测试运行在spring boot 环境中
class UserMapperTest {
    @Autowired //科学版的idea此行代码会报错
    private UserMapper userMapper;
    @Test
    void getUserById() {
       UserInfo userInfo= userMapper.getUserById(1);
        //System.out.println(userInfo);
        Assertions.assertNotNull(userInfo);
    }
}

这里是引用

@SpringBootTest//表示当前单元测试运行在spring boot 环境中
class UserMapperTest {
    @Autowired //科学版的idea此行代码会报错
    private UserMapper userMapper;
    @Test
    void getUserById() {
       UserInfo userInfo= userMapper.getUserById(1);
        //System.out.println(userInfo);
        Assertions.assertNull(userInfo);
    }
}

这里是引用

修改操作

  1. interface 添加修改方法的声明
 //修改方法【根据id修改名称】
    public int update(@Param("id") Integer id,@Param("username") String username);
  1. 在xml中添加接口的实现标签和具体的SQL
<update id="update">
        update userinfo set username=#{username} where id=#{id}
 </update>

测试:

    @Test
    @Transactional //在单元测试中添加此注解,表示在方法执行完之后回滚事务
    void update() {
        int result=userMapper.update(2,"zhangsan");
        Assertions.assertEquals(1,result);
    }

删除操作

  1. 在mapper(interface)里面添加删除代码的声明
 public int del (@Param("id") Integer id);
  1. 在xml中添加标签和删除的SQL编写
<delete  id="del">
        delete from userinfo where id=#{id}
 </delete>

测试:

   @Test
    @Transactional
    void del() {
        int result=userMapper.del(2);
        System.out.println("受影响的行数"+result);
        Assertions.assertEquals(1,result);
    }

添加数据

返回受影响的行数

  1. 在interface中添加声明
//添加用户,返回受影响行数
    public int add(UserInfo userInfo);

2.在xml中添加标签和添加的SQL编写

       <insert id="add">
        insert into userinfo (username,password,photo) values(#{username},#{password},#{photo});

    </insert>
   @Test
    void add() {
        UserInfo userInfo=new UserInfo();
        userInfo.setUsername("王五");
        userInfo.setPassword("123");
        userInfo.setPhoto("default.png");
        int result=userMapper.add(userInfo);
        System.out.println("添加的结果:"+result);
        Assertions.assertEquals(1,result);
    }

返回自增id

  1. 添加方法声明
//添加用户,返回受影响的行数和自增的id
    public int addGetId(UserInfo userInfo);

  1. 在xml中添加标签和添加的SQL编写
<insert id="addGetId" useGeneratedKeys="true" keyProperty="id">
        insert into userinfo (username,password,photo) values(#{username},#{password},#{photo});
    </insert>

测试:

    @Test
    @Transactional
    void addGetId() {
        UserInfo userInfo=new UserInfo();
        userInfo.setUsername("六六六");
        userInfo.setPassword("123");
        userInfo.setPhoto("default.png");
        System.out.println("添加之前 user id: "+userInfo.getId());
        int result=userMapper.addGetId(userInfo);
        System.out.println("受影响的行数:"+result);
        System.out.println("添加之后 user id:"+userInfo.getId());
        Assertions.assertEquals(1,result);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值