测试Spring service方法的一个例子

配置文件

  • Maven依赖
<!-- JUNIT -->
<dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.11</version>
</dependency>
<!--test-->
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-test</artifactId>
   <version>4.2.0</version>
</dependency>
  • application.properties
    需要将spring.datasource.url, spring.datasource.username, spring.datasource.password修改成自己的数据库链接,数据库用户和数据库密码
server.port=8090
mybatis.mapperLocations=classpath:mapping/*.xml

#数据库jdbc配置
spring.datasource.name=seckil
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver


##########################  druid配置   ##########################
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

# 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
# 配置获取连接等待超时的时间
spring.datasource.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
# 校验SQL,Oracle配置 spring.datasource.validationQuery=SELECT 1 FROM DUAL,如果不配validationQuery项,则下面三项配置无用
spring.datasource.validationQuery=SELECT 'x'
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.filters=stat,wall,log4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
spring.datasource.useGlobalDataSourceStat=true

  • applicationContext.xml
    通过<context:property-placeholder location="classpath:application.properties"/>指定properties文件,后面会用到application.properties配置文件里面的变量
    注意: base-package, typeAliasesPackage, mapperLocations 对应的的值需要适配成自己项目对应的值
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <!--用于存储变量的配置文件路径-->
    <context:property-placeholder location="classpath:application.properties"/>
    <!--需要扫描的包的路径-->
    <context:component-scan base-package="com.zemo.seckill"></context:component-scan>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${spring.datasource.driver-class-name}" />
        <property name="url" value="${spring.datasource.url}" />
        <property name="username" value="${spring.datasource.username}" />
        <property name="password" value="${spring.datasource.password}" />
    </bean>

    <!-- 配置会话工厂bean -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 数据源 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 给实体类取别名,这样配置可以只需要写类名,不需要带类完整路径,简化映射文件中的返回类型resultType书写(可能其他地方还有用到) -->
        <property name="typeAliasesPackage" value="com.zemo.seckill.dataobject" />
        <!--mapper文件路径-->
        <property name="mapperLocations" value="classpath:mapping/*.xml "/>
    </bean>


    <!-- 配置自动扫描对象关系映射文件 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 指定会话工厂,如配置中只有一个则可省去 -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        <!-- 指定要自动扫描的包,不带类名,表示扫描工程下所有在这一层下面的接口,所以为了方便,尽量把所有映射接口都放在同一包下 -->
        <property name="basePackage" value="com.zemo.seckill" />
    </bean>

</beans>

Service接口

package com.fly.cloudpay.service.user;
 
import com.fly.cloudpay.dao.entity.PayUserDO;
 
import java.util.Map;
 
/**
 * @Title: 缴费用户信息--Service
 */
public interface PayUserService {
 
  
 
    /**
     * @Title: 新增用户信息
     * @methodName:  add
     * @param payUserDO
     * @return void
     * @Description:
     *
     * @author: FLY
     * @date:  2018-03-02 15:15
     */
    void add(PayUserDO payUserDO);
 
}

Service实现类

package com.newcapec.fly.service.user.impl;
 
import com.newcapec.fly.constant.ControllerConstant;
import com.newcapec.fly.dao.PayUserDao;
import com.newcapec.fly.dao.entity.PayUserDO;
import com.newcapec.fly.service.user.PayUserService;
import com.newcapec.util.map.MapBeanTransUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.Map;
 
/**
 * @version V1.0
 * @Title: 缴费用户信息--Service实现层
 */
@Service
public class PayUserServiceImpl implements PayUserService {
 
    private static final Logger log = LoggerFactory.getLogger(PayUserServiceImpl.class);
 
    @Autowired
    private PayUserDao payUserDao;
 
 
 
    /**
     * @param payUserDO
     * @return void
     * @Title: 新增缴费用户信息
     * @methodName: add
     * @Description:
     * @author: FLY
     * @date: 2018-03-02 15:15
     */
    @Override
    public void add(PayUserDO payUserDO) {
 
        log.info("【新增缴费用户信息】,接收参数:{}", payUserDO);
        payUserDao.save(payUserDO);
    }
 
    
 
}

Spring测试类

@ContextConfiguration注解需要指定自己的配置文件applicationContext.xml

package service;
 
import com.fly.cloudpay.dao.PayUserDao;
import com.fly.cloudpay.dao.entity.PayUserDO;
import com.fly.cloudpay.service.user.PayUserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
/**
 * @Title:
 * @ClassName: service.ServiceTest.java
 * @Description:
 *
 * @Copyright 2016-2018  - Powered By 研发中心
 * @author: FLY
 * @date:  2018-03-01 11:35
 * @version V1.0
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class ServiceTest {
 
    @Autowired
    PayUserService payUserService;
 
 
    @Autowired
    private PayUserDao payUserDao;
 
    @Test
    public void payUserAddTest(){
 
        PayUserDO payUserDO = new PayUserDO();
        payUserDO.setPayUserIdNum("123456");
        payUserDO.setPayUserName("FLY");
        payUserDO.setBindTime(new java.util.Date());
        payUserService.add(payUserDO);
    }
 
   
}

参考

1 Spring:测试Service类中方法
2. 配置文件一applicationContext.xml

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值