Back to Repositories

Testing UserService BeetlSQL Implementation in Spring-Boot-Demo

This test suite validates the UserService implementation in a Spring Boot application using BeetlSQL ORM. It comprehensively tests CRUD operations and pagination functionality for user management, ensuring robust data handling and persistence.

Test Coverage Overview

The test suite provides extensive coverage of user management operations including:
  • User creation (single and batch)
  • User retrieval operations
  • Update functionality
  • Deletion verification
  • Pagination implementation
Edge cases include null checks, empty list handling, and proper ID generation verification.

Implementation Analysis

The testing approach utilizes JUnit with Spring Boot test framework integration. The implementation follows a systematic pattern of arranging test data, executing service methods, and asserting expected outcomes using Assert statements. BeetlSQL-specific features like PageQuery are thoroughly tested for pagination functionality.

Technical Details

Testing tools and libraries include:
  • JUnit for test execution
  • Spring Boot Test for dependency injection
  • Hutool for utility operations
  • AssertJ for assertions
  • Lombok for logging
  • BeetlSQL for ORM operations

Best Practices Demonstrated

The test suite exemplifies several testing best practices:
  • Proper test method naming conventions
  • Isolated test cases
  • Comprehensive assertion usage
  • Detailed logging for debugging
  • Structured data setup
  • Clear separation of concerns

xkcoding/spring-boot-demo

demo-orm-beetlsql/src/test/java/com/xkcoding/orm/beetlsql/service/UserServiceTest.java

            
package com.xkcoding.orm.beetlsql.service;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.json.JSONUtil;
import com.xkcoding.orm.beetlsql.SpringBootDemoOrmBeetlsqlApplicationTests;
import com.xkcoding.orm.beetlsql.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists;
import org.beetl.sql.core.engine.PageQuery;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

/**
 * <p>
 * User Service测试
 * </p>
 *
 * @author yangkai.shen
 * @date Created in 2018-11-14 16:30
 */
@Slf4j
public class UserServiceTest extends SpringBootDemoOrmBeetlsqlApplicationTests {
    @Autowired
    private UserService userService;

    @Test
    public void saveUser() {
        String salt = IdUtil.fastSimpleUUID();
        User user = User.builder().name("testSave3").password(SecureUtil.md5("123456" + salt)).salt(salt).email("[email protected]").phoneNumber("17300000003").status(1).lastLoginTime(new DateTime()).createTime(new DateTime()).lastUpdateTime(new DateTime()).build();

        user = userService.saveUser(user);
        Assert.assertTrue(ObjectUtil.isNotNull(user.getId()));
        log.debug("【user】= {}", user);
    }

    @Test
    public void saveUserList() {
        List<User> users = Lists.newArrayList();
        for (int i = 5; i < 15; i++) {
            String salt = IdUtil.fastSimpleUUID();
            User user = User.builder().name("testSave" + i).password(SecureUtil.md5("123456" + salt)).salt(salt).email("testSave" + i + "@xkcoding.com").phoneNumber("1730000000" + i).status(1).lastLoginTime(new DateTime()).createTime(new DateTime()).lastUpdateTime(new DateTime()).build();
            users.add(user);
        }
        userService.saveUserList(users);
        Assert.assertTrue(userService.getUserList().size() > 2);
    }

    @Test
    public void deleteUser() {
        userService.deleteUser(1L);
        User user = userService.getUser(1L);
        Assert.assertTrue(ObjectUtil.isNull(user));
    }

    @Test
    public void updateUser() {
        User user = userService.getUser(2L);
        user.setName("beetlSql 修改后的名字");
        User update = userService.updateUser(user);
        Assert.assertEquals("beetlSql 修改后的名字", update.getName());
        log.debug("【update】= {}", update);
    }

    @Test
    public void getUser() {
        User user = userService.getUser(1L);
        Assert.assertNotNull(user);
        log.debug("【user】= {}", user);
    }

    @Test
    public void getUserList() {
        List<User> userList = userService.getUserList();
        Assert.assertTrue(CollUtil.isNotEmpty(userList));
        log.debug("【userList】= {}", userList);
    }

    @Test
    public void getUserByPage() {
        List<User> userList = userService.getUserList();
        PageQuery<User> userByPage = userService.getUserByPage(1, 5);
        Assert.assertEquals(5, userByPage.getList().size());
        Assert.assertEquals(userList.size(), userByPage.getTotalRow());
        log.debug("【userByPage】= {}", JSONUtil.toJsonStr(userByPage));
    }
}