SSM项目之商铺系统-各层的测试(三)

2024-02-18 02:32

本文主要是介绍SSM项目之商铺系统-各层的测试(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们针对Area(地区)表进行测试。我们取出area表中的所有信息,通过juint来完成测试

第一步:给数据表添加数据。

我们测试查询语句:

      select * from tb_area
      ORDER BY priority DESC //降序输出area表中所有信息

第二步:写dao层接口。

public interface AreaDao {//列出区域列表List<Area>  queryArea();
}

 配置mapper映射文件 :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="storepro.dao.AreaDao"><select id="queryArea" resultType="area">select * from tb_areaORDER BY priority DESC</select>
</mapper>

注意namespace必须相同(经过测试mapper文件不必和dao层接口名称相同

我们测试要使用junit,我们先看下怎么使用。

这是junit的包我们看下BaseTest


//告诉spring通过SpringJUnit4ClassRunner.class来跑
@RunWith(SpringJUnit4ClassRunner.class)
//告诉junit spring 配置文件的位置
@ContextConfiguration({"classpath:spring/spring-dao.xml","classpath:spring/spring-service.xml"})//不能使用通配符,测试了
public class BaseTest {}

这个类中使用了两个注解,只要就是完成在测试前对spring的装配,这样完成后,我们要测试的dao层等类只需要继承这个类就能完成这些操作。 

dao层的测试:

1.建立dao层测试类

//继承后每次加载都会加载spring-dao的配置文件
public class AreaDaoTest extends BaseTest{@Autowiredprivate AreaDao areaDao;@Testpublic void testQueryArea(){List<Area> areaList=areaDao.queryArea();assertEquals(2,areaList.size());}}

我们通过mapper文件和dao层接口实现了调用queryArea方法得到了List,我们通过判断长度是否为2来确定dao层是否正确

注意:我们看这句   

@Autowired
    private AreaDao areaDao;

我们之前并没有装配这个类,但是现在却直接可以自动装配,这是通过mapper映射的方式,直接将dao层接口实现了,并且可以直接使用注解装配

引出:除了上面那种情况,如果一个类中有另一个类属性,那么被包含的属性必须被装配,不管使用注解还是xml方式。

测试结果:正确说明我们的dao层没任何问题

测试service层:

1.先写出service层的接口和接口实现

接口:

public interface AreaService {//获取Area的列表List<Area>  getAreaList();
}

接口实现:

@Service
public class AreaServiceImpl implements AreaService {@Autowired//这里的areaDao由mapper文件自动生成对象并注入ioc容器,所以不需要在AreaDao中注解它为beanprivate AreaDao areaDao;@Overridepublic List<Area> getAreaList() {return areaDao.queryArea();}
}

junit测试:

public class AreaServiceTest extends BaseTest {@Autowiredprivate AreaService areaService;@Testpublic void testGetArealList(){List<Area> areaList =areaService.getAreaList();Assert.assertEquals("西苑",areaList.get(0).getAreaName());}
}

我们通过判断列表第一个字符的名字是不是等于我们想要的。

注意: 

  @Autowired
    private AreaService areaService;

这句的装配使用的是接口类型却使用了实现类AreaServiceImpl的方法,因为我们在实现类的上面加了@Servcie注解,这样可以直接使用接口类型。(不止service,@controller等也可以)

web层测试:


@Controller//注解装配它
@RequestMapping("/superadmin")//注解声明这个类的url根目录
public class AreaController {@Autowiredprivate AreaService areaService;@RequestMapping(value = "/listarea", method = RequestMethod.GET)//声明这个类的这个方法的子目录和请求数据方法@ResponseBody//通过这个注解声明返回类型为jsonprivate Map<String, Object> listArea() {Map<String, Object> modelMap = new HashMap<String, Object>();List<Area> list = new ArrayList<Area>();list = areaService.getAreaList();try {modelMap.put("rows", list);modelMap.put("totals", list.size());} catch (Exception e) {modelMap.put("success", false);modelMap.put("errMsg", e.toString());e.printStackTrace();}return modelMap;}
}

我们打开tomcat输入相应的网址。

结果如图:成功 

这篇关于SSM项目之商铺系统-各层的测试(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/719766

相关文章

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶