SpringBoot整合SSM-junit测试

前提 :创建一个新的springboot模块

创建一个员工案例(搭建)

  1. 创建员工实体类
  2. 创建员工的控制层
  3. 创建员工的服务层(接口–实现类)
  4. 创建员工的数据层(接口–实现类)

以上的4种文件 是使用SSM必备的文件

创建员工实体类

  • 属性
  • get|set方法

理论上说 实体类是需要和数据库中的表格的列名一对一对应 在此处是任意命名属性 没有连接数据库

SpringBoot整合SSM-junit测试_第1张图片

实体类代码:

package top.yxqz.number2.entity;

/**
 * @author: 余小小
 * @date: 2023/9/12
 * @description:员工实体类
 * 推荐安装插件 PTG 插件:快速生成JavaBean需要的东西、快速生成SQL语句
 * 快速生成JavaBean需要的东西 快捷键:ctrl+shift+逗号
 */
public class Employee {
    //    用户名
    private String userName;
    //    年龄
    private Integer age;
    //    密码
    private String password;


    public Employee() {
    }

    public Employee(String userName, Integer age, String password) {
        this.userName = userName;
        this.age = age;
        this.password = password;
    }

    /**
     * 获取
     * @return userName
     */
    public String getUserName() {
        return userName;
    }

    /**
     * 设置
     * @param userName
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

    /**
     * 获取
     * @return age
     */
    public Integer getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(Integer age) {
        this.age = age;
    }

    /**
     * 获取
     * @return password
     */
    public String getPassword() {
        return password;
    }

    /**
     * 设置
     * @param password
     */
    public void setPassword(String password) {
        this.password = password;
    }

    public String toString() {
        return "Employee{userName = " + userName + ", age = " + age + ", password = " + password + "}";
    }
}

控制层

/**
 * @author: 余小小
 * @date: 2023/9/12
 * @description:员工控制层 控制层推荐使用@Controller注解 但是我们只想要返回数据
 * 推荐使用@RestController注解
 */
@RestController
public class EmployeeController {
}

服务层

package top.yxqz.number2.service;

/**
 * @author: 余小小
 * @date: 2023/9/12
 * @description: 为啥要创建服务层的接口 而不是直接创建服务层的实现类??
 * 在IOC中 获取Bean对象有多种方式  官方推荐使用接口类型来获取Bean对象(面向接口编程)
 * Bean对象实际上是接口类型的引用 指向的该接口的实现类(多态的性质)
 */
public interface EmployeeService {
}

创建服务层的实现类

SpringBoot整合SSM-junit测试_第2张图片

package top.yxqz.number2.service.imp;

import org.springframework.stereotype.Service;
import top.yxqz.number2.service.EmployeeService;

/**
 * @author: 余小小
 * @date: 2023/9/12
 * @description: 在服务层(业务层)推荐使用Service注解
 */
@Service
public class EmployeeServiceImp implements EmployeeService {
}

持久层

package top.yxqz.number2.dao;

/**
 * @author: 余小小
 * @date: 2023/9/12
 * @description:
 */
public interface EmployeeDao {
}

持久层实现类

package top.yxqz.number2.dao.imp;

import org.springframework.stereotype.Repository;
import top.yxqz.number2.dao.EmployeeDao;

/**
 * @author: 余小小
 * @date: 2023/9/12
 * @description:为了让Spring知道该类是持久层的bean 需要添加注解  (将该类交给IOC容器管理)
 * 这种思想————组件化思想
 * 在持久层 推荐使用@Repository注解
 */
@Repository
public class EmployeeDaoImp implements EmployeeDao {
}

获取员工信息(需求)

  1. 信息 理论来源于数据库,在此处未连接数据库 ,在持久层中模拟数据库获取数据——————持久层|数据层
  2. 需要将该信息的接口暴露给前端(写接口)——————控制层
  3. 实现接口(在业务层中实现接口)——————————服务层

推荐写功能的顺序:控制层----服务层—持久层

控制层代码

package top.yxqz.number2.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import top.yxqz.number2.entity.Employee;
import top.yxqz.number2.service.EmployeeService;

/**
 * @author: 余小小
 * @date: 2023/9/12
 * @description:员工控制层 控制层推荐使用@Controller注解 但是我们只想要返回数据
 * 推荐使用@RestController注解
 */
@RestController
public class EmployeeController {


    @Autowired
    private EmployeeService employeeService;

    /**
     * 需求:获取员工的信息
     * 1.返回员工信息对象
     * 2.调用员工服务层实现
     */
    @GetMapping("/emp")
    public Employee getEmpObj() {
        return employeeService.getEmpObj();
    }
}

服务层(实现类)

package top.yxqz.number2.service.imp;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import top.yxqz.number2.dao.EmployeeDao;
import top.yxqz.number2.entity.Employee;
import top.yxqz.number2.service.EmployeeService;

/**
 * @author: 余小小
 * @date: 2023/9/12
 * @description: 在服务层(业务层)推荐使用Service注解
 */
@Service
public class EmployeeServiceImp implements EmployeeService {

    @Autowired
    private EmployeeDao employeeDao;

    /**
     * 实现 获取员工信息的方法
     * 1.调用持久层|数据层 来实现
     *
     * @return
     */
    @Override
    public Employee getEmpObj() {
        return employeeDao.getEmpObj();
    }
}

持久层(实现类)

package top.yxqz.number2.dao.imp;

import org.springframework.stereotype.Repository;
import top.yxqz.number2.dao.EmployeeDao;
import top.yxqz.number2.entity.Employee;

/**
 * @author: 余小小
 * @date: 2023/9/12
 * @description:为了让Spring知道该类是持久层的bean 需要添加注解  (将该类交给IOC容器管理)
 * 这种思想————组件化思想
 * 在持久层 推荐使用@Repository注解
 */
@Repository
public class EmployeeDaoImp implements EmployeeDao {
    /**
     * 制造数据(模拟从数据库获取数据)
     *
     * @return
     */
    @Override
    public Employee getEmpObj() {
        Employee employee = new Employee("鱼香茄子",22,"123456");
        return employee;
    }
}

获取员工信息(测试)

  1. 创建测试类
  2. 执行单元测试

SpringBoot整合SSM-junit测试_第3张图片

测试类代码

package top.yxqz.number2;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import top.yxqz.number2.controller.EmployeeController;
import top.yxqz.number2.entity.Employee;

/**
 * @author: 余小小
 * @date: 2023/9/12
 * @description:测试员工相关的接口功能 1.注入员工控制层
 * 2.调用相关方法 查看预期结果
 * 使用springboot的测试(不在讲解SSM中的测试方法)
 * 1.使用@SpringBootTest注解
 * 该注解的目的(功能):
 */
@SpringBootTest
public class TestEmployee {
    //    注入员工控制层
    @Autowired
    private EmployeeController employeeController;

    /**
     * @Test 是junit单元测试工具类的
     * 该方法 在类中要满足 java方法的规则(标识符)
     * 该方法 返回值 必须是void
     * 方法名字建议 和要测试的接口方法一致(规范)
     */
    @Test
    public void getEmpObj() {
//    调用相关方法 查看预期结果
        Employee employee = employeeController.getEmpObj();
        System.out.println(employee);
    }


}

获取员工信息(启动)

  • 工程|模块的启动
    SpringBoot整合SSM-junit测试_第4张图片

访问接口:去控制层定义的路由地址 进行访问

当前功能的访问地址:localhost:8080/emp

SpringBoot整合SSM-junit测试_第5张图片

访问结果

SpringBoot整合SSM-junit测试_第6张图片

推荐安装插件PTG 插件

SpringBoot整合SSM-junit测试_第7张图片

你可能感兴趣的:(SpringBoot框架,spring,boot,junit,后端)