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

相关文章

Nginx实现高并发的项目实践

《Nginx实现高并发的项目实践》本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用最新稳定版本的Nginx合理配置工作进程(workers)配置工作进程连接数(worker_co

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创