针对整合的Dao层与Service层,在做spring与通用Mapper和分页插件相关测试时比较麻烦。如果只用JUnit测试,需要每次Test方法里初始化一下applicationContext,效率比较低下。并且还要进行强制类型转换的造型操作。使用Spring测试套件,测试用例类中的属性会被自动填充Spring容器的对应Bean,直接使用@Autowired注入使用即可!

本次测试目的是看看通用Mapper插件具体如何整合传统SSM项目。

在maven的pom.xml中加入以下配置,其他spring相关配置见后面的附录。

一、导入依赖坐标

  1. <dependency>
  2. <groupId>junit</groupId>
  3. <artifactId>junit</artifactId>
  4. <version>4.12</version>
  5. <scope>test</scope>
  6. </dependency>
  7.  
  8. <dependency>
  9. <groupId>org.springframework</groupId>
  10. <artifactId>spring-test</artifactId>
  11. <version>4.3.25.RELEASE</version>
  12. </dependency>

二、定义一个测试基类

这是利用了Java语言的继承性,可以简化未来具体用到的测试类,不用写重复的注解部分的代码。

  1. import org.junit.runner.RunWith;
  2. import org.springframework.test.context.ContextConfiguration;
  3. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  4.  
  5. /**
  6. * 配置spring和junit整合,junit启动时加载springIOC容器 spring-test,junit
  7. */
  8. @RunWith(SpringJUnit4ClassRunner.class)
  9. // 告诉junit spring配置文件的位置
  10. @ContextConfiguration({ "classpath:spring/spring-redis.xml","classpath:spring/spring-dao.xml",
  11. "classpath:spring/spring-service.xml" })
  12. public class BaseTest {
  13.  
  14. }

三、编写具体的测试类,继承刚刚的测试基类:

通用Mapper插件是对mybatis框架在单表CRUD操作时支持性很好。此处的selectAll()和select(null)方法的查询效果是一样的,都是查询所有。

  1. public class SpringTkMapperTest extends BaseJunit4Test {
  2.  
  3. @Autowired
  4. UserMapper userMapper;
  5.  
  6. @Test
  7. public void testUserMapper() {
  8.  
  9. //List<User> userList = userMapper.selectAll();
  10. List<User> userList = userMapper.select(null);
  11. System.out.println(userList);
  12. }
  13.  
  14. }

附录:

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:context="http://www.springframework.org/schema/context"
  3. xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
  10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
  11. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
  12.  
  13. <!-- 加载配置文件,可以使用占位符替换功能 -->
  14. <context:property-placeholder
  15. location="classpath:properties/*.properties" ignore-unresolvable="true" />
  16.  
  17. <!-- 定义dataSource数据源 -->
  18. <bean id="dataSource"
  19. class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
  20. <!-- 数据库驱动 -->
  21. <property name="driverClassName" value="${jdbc.driver}" />
  22. <!-- 相应驱动的jdbcUrl -->
  23. <property name="url" value="${jdbc.url}" />
  24. <!-- 数据库的用户名 -->
  25. <property name="username" value="${jdbc.username}" />
  26. <!-- 数据库的密码 -->
  27. <property name="password" value="${jdbc.password}" />
  28. <!-- 配置初始化大小、最小、最大 -->
  29. <property name="initialSize" value="5" />
  30. <property name="minIdle" value="5" />
  31. <property name="maxActive" value="10" />
  32. <!-- 配置从连接池获取连接等待超时的时间,单位是毫秒 -->
  33. <property name="maxWait" value="10000" />
  34. <!-- 配置间隔多久启动一次DestroyThread,对连接池内的连接才进行一次检测,单位是毫秒。
  35. 检测时:1.如果连接空闲并且超过minIdle以外的连接,如果空闲时间超过minEvictableIdleTimeMillis设置的值则直接物理关闭。
  36. 2.在minIdle以内的不处理。 -->
  37. <property name="timeBetweenEvictionRunsMillis" value="600000" />
  38. <!-- 配置一个连接在池中最大空闲时间,单位是毫秒 -->
  39. <property name="minEvictableIdleTimeMillis" value="300000" />
  40. <!-- 设置从连接池获取连接时是否检查连接有效性,true时,每次都检查;false时,不检查 -->
  41. <property name="testOnBorrow" value="false" />
  42. <!-- 设置往连接池归还连接时是否检查连接有效性,true时,每次都检查;false时,不检查 -->
  43. <property name="testOnReturn" value="false" />
  44. <!-- 设置从连接池获取连接时是否检查连接有效性,
  45. true时,如果连接空闲时间超过minEvictableIdleTimeMillis进行检查,否则不检查;
  46. false时,不检查 -->
  47. <property name="testWhileIdle" value="true" />
  48. </bean>
  49.  
  50. <!-- 让spring管理sqlSessionFactory 使用mybatis和spring整合包中的 -->
  51. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  52. <!-- 数据库连接池 -->
  53. <property name="dataSource" ref="dataSource" />
  54. <!-- 加载mybatis的全局配置文件 -->
  55. <property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
  56. <!-- 实体类别名包 -->
  57. <property name="typeAliasesPackage" value="cn.itcast.usermanage.pojo"/>
  58. <!-- 配置mapper.xml文件 -->
  59. <!-- <property name="mapperLocations" value="classpath*:mybatis/mappers/*Mapper.xml"/> -->
  60. <property name="plugins">
  61. <array>
  62. <bean class="com.github.pagehelper.PageInterceptor">
  63. <property name="properties">
  64. <value>
  65. helperDialect=mysql
  66. reasonable=true
  67. rowBoundsWithCount=true
  68. </value>
  69. </property>
  70. </bean>
  71. </array>
  72. </property>
  73. </bean>
  74.  
  75. <!-- 配置扫描接口包,加载通用mapper代理对象 -->
  76. <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
  77. <!-- 扫描多个包地址 -->
  78. <property name="basePackage" value="cn.itcast.usermanage.mapper" />
  79.  
  80. </bean>
  81.  
  82. </beans>
  1. <!-- 集中定义依赖版本号,参考了SpringBboot启动器的版本 -->
  2. <properties>
  3. <junit.version>4.12</junit.version>
  4. <slf4j.version>1.7.28</slf4j.version>
  5. <spring.version>4.3.25.RELEASE</spring.version>
  6. <mybatis.version>3.4.6</mybatis.version>
  7. <mybatis.spring.version>1.3.2</mybatis.spring.version>
  8. <mybatis.paginator.version>1.2.17</mybatis.paginator.version>
  9. <mapper.version>4.1.5</mapper.version>
  10. <pagehelper.version>5.1.10</pagehelper.version>
  11. <jsqlparser.version>2.0</jsqlparser.version>
  12. <mysql.version>5.1.47</mysql.version>
  13. <druid.version>1.1.15</druid.version>
  14. <jackson.version>2.9.9.3</jackson.version>
  15. <jstl.version>1.2</jstl.version>
  16. <servlet-api.version>3.1.0</servlet-api.version>
  17. <jsp-api.version>2.2</jsp-api.version>
  18. <httpclient.version>4.5.10</httpclient.version>
  19. <joda-time.version>2.9.9</joda-time.version>
  20. <commons-lang3.version>3.9</commons-lang3.version>
  21. <commons-io.version>2.5</commons-io.version>
  22. <commons-net.version>3.6</commons-net.version>
  23. <commons-fileupload.version>1.4</commons-fileupload.version>
  24. <jedis.version>3.1.0</jedis.version>
  25. <solrj.version>7.7.2</solrj.version>
  26. </properties>

=======================================================

参考资料:https://www.cnblogs.com/gkaigk1987/articles/5367569.html

Spring Test+JUnit4整合使用测试ZZJ_淘淘商城项目:day01(RESTful Web Service)的更多相关文章

  1. Apache CXF实现Web Service(3)——Tomcat容器和不借助Spring的普通Servlet实现JAX-RS(RESTful) web service

    起步 参照这一系列的另外一篇文章: Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 首先 ...

  2. 构建一个基于 Spring 的 RESTful Web Service

    本文详细介绍了基于Spring创建一个“hello world” RESTful web service工程的步骤. 目标 构建一个service,接收如下HTTP GET请求: http://loc ...

  3. Building a RESTful Web Service Using Spring Boot In Eclipse

    一.构建restful web service 创建Maven的java web工程,maven的pom文件加入依赖包 创建包hello Greeting.java package hello; pu ...

  4. (转)接口自动化测试 – Java+TestNG 测试 Restful Web Service

    本文主要介绍如何用Java针对Restful web service 做接口自动化测试(数据驱动),相比UI自动化,接口自动化稳定性可靠性高,实施难易程度低,做自动化性价比高.所用到的工具或类库有 T ...

  5. Apache CXF实现Web Service(4)——Tomcat容器和Spring实现JAX-RS(RESTful) web service

    准备 我们仍然使用 Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 中的代码作为基础,并 ...

  6. Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service

    实现目标 http://localhost:9000/rs/roomservice 为入口, http://localhost:9000/rs/roomservice/room为房间列表, http: ...

  7. 【转】Spring 4.x实现Restful web service

    http://my.oschina.net/yuyidi/blog/352909 首先我们还是跟之前一样,创建一个maven项目,不过因为Spring Restful web service是基于Sp ...

  8. 用Spring Tools Suite(STS)开始一个RESTful Web Service

    spring.io官方提供的例子Building a RESTful Web Service提供了用Maven.Gradle.STS构建一个RESTFul Web Service,实际上采用STS构建 ...

  9. [翻译]Spring MVC RESTFul Web Service CRUD 例子

    Spring MVC RESTFul Web Service CRUD 例子 本文主要翻译自:http://memorynotfound.com/spring-mvc-restful-web-serv ...

随机推荐

  1. Sublime Text与LaTeX的结合

    1.通过Command Palette安装LaTeXTools 2.通过Command Palette查找LaTeXTools: Reconfigure and migrate settings,回车

  2. 修改虚拟机ip

    在命令行里输入:more  /etc/sysconfig/network-scripts/ifcfg-eth0 (注意more后要空一格,还有eth0,最后是数字零).  然后再输入:ifconfig ...

  3. 一本通1166 求f(x,n)

    [题目描述] 已知 计算x=4.2,n=1以及x=2.5,n=15时f的值. [输入] 输入x和n. [输出] 函数值,保留两位小数. [输入样例] 4.2 10 [输出样例] 3.68 1.看见这种 ...

  4. 四、SAP中转义字符的使用和不同数据类型所占长度不同

    一.代码如下: 效果如下,注意看,数字类型占用了10个位置:

  5. 剑指offer第40题

    package com.yan.offer; /** * 题目描述: * * 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. * * @author Ya ...

  6. mysql插入文本文档及读取

    1.把本地的一个文件插入到数据库中,数据库字段用text保存 public static void main(String[] args) { PropKit.use(“pro.txt”);Druid ...

  7. [软件] Omnigraffle

    一个商业软件, mac下画画图, 还挺好用的. 网上可以找到可用的注册码 https://blog.csdn.net/glw0223/article/details/90736751

  8. 9.scrapy pycharm调试小技巧,请求一次,下次直接调试,不必每次都启动整个爬虫,重新请求一整遍

    pycharm调试技巧:调试时,请求一次,下次直接调试,不必每次都启动整个爬虫,重新请求一整遍 [用法]cmd命令运行:scrapy shell 网址 第一步,cmd进行一次请求: scrapy sh ...

  9. 4)栈和队列-->受限线性表

    栈和队列叫  受限线性表  只不过他们插入和删除的位置  相对于之前的线性表有了限制   所以叫受限线性表 1)栈-->就是先进后出 2)队列-->先进先出 3)循环链表框图: 4)队列

  10. TensorFlow(一)

    一.Hello World 1.只安装CPU版,TensorFlow1.14.0版本代码 # import tensorflow as tf import tensorflow.compat.v1 a ...