掘金日新计划 · 8 月更文挑战第4天--spring-单元测试

72 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情

今天我们学习一下spring单元测试的功能

1.创建工程

Dingtalk_20220803160147.jpg

2.pom.xml引入对应的依赖

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.24</version>
        </dependency>
<!--        引入单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
<!--        引入spring test类-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
    </dependencies>

3.resource目录下创建applicationContext.xml文件并且配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
    <!--    配置数据源
    url表示数据库连接语句,用于说明连接哪一个数据库,用哪种编码等信息
    username表示数据库账户
    password表示数据库密码-->
    <bean id="dataScource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/imooc?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
<!--    定义jdbcTemplate并且注入dataSource-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataScource"/>
    </bean>
</beans>

4.创建对应dao和entity实体类

Dingtalk_20220803160504.jpg

Employee.class

package com.imooc.entity;
import java.util.Date;
public class Employee {
    public Integer eno;
    /
    数据表多少个字段,就创建多少个属性 并且生成对应的get和set方法
    .........
    /
    public Integer getEno() {
        return eno;
    }
    public void setEno(Integer eno) {
        this.eno = eno;
    }
    //重写toString方法,为了方便调试
    @Override
    public String toString() {
        return "Employee{" +
                "eno=" + eno +
                ", ename='" + ename + ''' +
                ", salary=" + salary +
                ", dname='" + dname + ''' +
                ", hiredate=" + hiredate +
                '}';
    }
}

EmployeeDao.java

package com.imooc.dao;
import com.imooc.entity.Employee;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
public class EmployeeDao {
    //引入jdbcTemplate属性并且创建get和set方法
    public JdbcTemplate jdbcTemplate;
    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
    //根据eno查询员工
    public Employee findById(Integer eno) {
        String sql = "select * from employee where eno = ?";
        Employee employee = jdbcTemplate.queryForObject(sql, new Object[]{eno}, new BeanPropertyRowMapper<Employee>(Employee.class));
        return employee;
    }
}

5.创建dao之后,在application.xml配置对应的bean并且注入jdbcTemplate

<bean id="employeeDao" class="com.imooc.dao.EmployeeDao">
    <property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>

6.test目录创建对应的测试用例文件,一般测试用例的文件以 XXXTestor结尾

Dingtalk_20220803161207.jpg
测试用例文件配置如下:

import com.imooc.dao.EmployeeDao;
import com.imooc.entity.Employee;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import java.util.Date;
//把控制权交给springJunit
@RunWith(SpringJUnit4ClassRunner.class)
//加载文件
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class JdbcTemplateTestor {
    //如果是对象 使用注解@Resource
    @Resource
    public EmployeeDao employeeDao;
    //测试用例使用 @Test注解
    @Test
    public void findById(){
       Employee employee =  employeeDao.findById(1000);
        System.out.println(employee);
    }
}

输出的结果为:

Dingtalk_20220803161726.jpg