实战SSM_O2O商铺_05集成SSM后验证DAO层、Service层、Controller层的配置
文章目錄
- 概述
- 驗證DAO層的配置
- 接口
- SQL映射文件
- 單元測試類
- 基類
- DAO層單元測試類
- 驗證Service層的配置
- 接口以及實現類
- 單元測試類
- 驗證Controller層的配置
- 控制層
- 啟動服務,瀏覽器訪問
- 附- 模擬HTTP 請求調測利器Postman
- Postman概述
- Postman安裝使用
- 使用Postman
- Github地址
概述
整合SSM框架之后,我們分別對持久層、業務層、控制層分別做下單元測試。
Area這個實體類屬性相對較少,我們就選擇使用Area來測試吧。
首先為tb_area表準備2條數據
-- ---------------------------- -- Records of tb_area -- ---------------------------- INSERT INTO `tb_area` VALUES ('1', '北京', '帝都', '0', '2018-05-13 21:00:26', '2018-05-14 21:00:33'); INSERT INTO `tb_area` VALUES ('2', '上海', '魔都', '99', '2018-05-13 21:00:36', '2018-05-14 21:00:41');驗證DAO層的配置
接口
結合/o2o/src/main/resources/spring/spring-dao.xml中的配置
所以 接口層的類都應該寫在com.artisan.o2o.dao包下
AreaDao.java
package com.artisan.o2o.dao;import java.util.List;import com.artisan.o2o.entity.Area;public interface AreaDao {List<Area> queryArea(); }SQL映射文件
結合/o2o/src/main/resources/spring/spring-dao.xml中的配置
所以在/o2o/src/main/resources/mapper目錄下 新建映mybatis的SQL映射文件
AreaDao.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.artisan.o2o.dao.AreaDao"><select id="queryArea" resultType="Area">SELECTarea_id,area_name,area_desc,priority,create_time,last_edit_timeFROMtb_areaORDER BYpriority DESC</select> </mapper>單元測試類
src/test/java目錄下新建com.artisan.o2o包,使用spring-test更加方便的進行單元測試。 我們已經在 pom.xml中添加了spring-test的依賴。
創建 Spring Test 的基類,該類主要用來加載配置文件,設置web環境。所有的測試類,都需要繼承該類初始化spring信息。
基類
放在com.artisan.o2o目錄下,所有的測試類,都需要繼承該類初始化spring信息。
package com.artisan.o2o;import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/*** * * @ClassName: BaseTest* * @Description: 測試類的基類,配置Spring和junit整合,junit啟動時加載springIOC容器* * @author: Mr.Yang* * @date: 2018年5月14日 下午12:58:21*/@RunWith(SpringJUnit4ClassRunner.class) // 告訴junit spring配置文件 @ContextConfiguration({ "classpath:spring/spring-dao.xml", "classpath:spring-service.xml" }) public class BaseTest {}DAO層單元測試類
com.artisan.o2o.dao包下建立DAO層的測試類,繼承BaseTest
package com.artisan.o2o.dao;import static org.junit.Assert.assertEquals;import java.util.List;import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired;import com.artisan.o2o.BaseTest; import com.artisan.o2o.entity.Area;/*** * * @ClassName: AreaDaoTest* * @Description: 集成SSM后對DAO層進行驗證* * @author: Mr.Yang* * @date: 2018年5月14日 下午5:21:49*/ public class AreaDaoTest extends BaseTest {@AutowiredAreaDao areaDao;@Testpublic void testQueryArea() {List<Area> areaList = areaDao.queryArea();// 插入了2條測試數據,期望list中有2條assertEquals(2, areaList.size());// SQL中按照權重排序,上海priority 99 ,期望第一條數據是 上海System.out.println(areaList.get(0));assertEquals("上海", areaList.get(0).getAreaName());} }單元測試運行正常。
關鍵日志
JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@a1f72f5] will not be managed by Spring ==> Preparing: SELECT area_id, area_name, area_desc, priority, create_time, last_edit_time FROM tb_area ORDER BY priority DESC ==> Parameters: <== Columns: area_id, area_name, area_desc, priority, create_time, last_edit_time <== Row: 2, 上海, 魔都, 99, 2018-05-13 21:00:36.0, 2018-05-14 21:00:41.0 <== Row: 1, 北京, 帝都, 0, 2018-05-13 21:00:26.0, 2018-05-14 21:00:33.0 <== Total: 2 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@61710c6] Area [areaId=2, areaName=上海, areaDesc=魔都, priority=99, createTime=Sun May 13 21:00:36 BOT 2018, lastEditTime=Mon May 14 21:00:41 BOT 2018]驗證Service層的配置
接口以及實現類
接口
package com.artisan.o2o.service;import java.util.List;import com.artisan.o2o.entity.Area;public interface AreaService {/*** * * @Title: getAreaList* * @Description: 獲取區域列表* * @return* * @return: List<Area>*/List<Area> getAreaList(); }實現類
package com.artisan.o2o.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import com.artisan.o2o.dao.AreaDao; import com.artisan.o2o.entity.Area; import com.artisan.o2o.service.AreaService;/*** * * @ClassName: AreaServiceImpl* * @Description: @Service標注的服務層* * @author: Mr.Yang* * @date: 2018年5月14日 下午9:06:45*/ @Service public class AreaServiceImpl implements AreaService {@AutowiredAreaDao areaDao;@Overridepublic List<Area> getAreaList() {return areaDao.queryArea();}}單元測試類
package com.artisan.o2o.service;import java.util.List;import org.junit.Assert; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired;import com.artisan.o2o.BaseTest; import com.artisan.o2o.entity.Area;public class AreaServiceTest extends BaseTest {@AutowiredAreaService areaService;@Testpublic void testGetAreaList() {List<Area> areaList = areaService.getAreaList();Assert.assertEquals("上海", areaList.get(0).getAreaName());} }BaseTest基類中,別忘了加載classpath:spring-service.xml 配置文件,否則報錯。 第一步已經加好了,這里就不重復了。
單元測試運行正常。
關鍵日志
JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@a1f72f5] will not be managed by Spring ==> Preparing: SELECT area_id, area_name, area_desc, priority, create_time, last_edit_time FROM tb_area ORDER BY priority DESC ==> Parameters: <== Columns: area_id, area_name, area_desc, priority, create_time, last_edit_time <== Row: 2, 上海, 魔都, 99, 2018-05-13 21:00:36.0, 2018-05-14 21:00:41.0 <== Row: 1, 北京, 帝都, 0, 2018-05-13 21:00:26.0, 2018-05-14 21:00:33.0 <== Total: 2 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@61710c6] Area [areaId=2, areaName=上海, areaDesc=魔都, priority=99, createTime=Sun May 13 21:00:36 BOT 2018, lastEditTime=Mon May 14 21:00:41 BOT 2018]驗證Controller層的配置
控制層
package com.artisan.o2o.web;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody;import com.artisan.o2o.entity.Area; import com.artisan.o2o.service.AreaService;@Controller @RequestMapping("/superadmin") public class AreaController {@AutowiredAreaService areaService;@RequestMapping(value = "/listArea", method = RequestMethod.GET)@ResponseBodypublic Map<String, Object> getAreas() {Map<String, Object> map = new HashMap<String, Object>();List<Area> areaList = new ArrayList<Area>();try {areaList = areaService.getAreaList();map.put("total", areaList.size());map.put("rows", areaList);for (Area area : areaList) {System.out.println("區域:" + area);}} catch (Exception e) {e.printStackTrace();map.put("success", false);map.put("errMsg", e.getMessage().toString());}return map;}}啟動服務,瀏覽器訪問
訪問如下地址:
http://localhost:8080/o2o/superadmin/listArea
為了美化JSON,在瀏覽器中,更直觀的查看JSON,在Chrome中安裝了json-handle插件,展示效果如下:
附- 模擬HTTP 請求調測利器Postman
Postman概述
在開發或者調試網絡程序或者是網頁B/S模式的程序的時候,常常需要跟蹤監視網頁HTTP請求,測試服務器響應是否正確。
Chrome 瀏覽器擴展插件:Postman,可以模擬用戶 HTTP 請求的數據發送到服務器,方便測試服務器接口。
- (1)Postman 是一個 Chrome 擴展,提供功能強大的 API & HTTP 請求調試。
- (2)能夠發送任何類型的 HTTP requests(GET, HEAD, POST, PUT…),附帶任何數量的參數,以及自定義Http 頭信息(HTTP Headers)。
- (3)支持不同的認證機制(basic, digest, OAuth),接收到的響應語法高亮(HTML,JSON 或 XML)。
- (4)能夠保留了歷史的請求,這樣我們就可以很容易地重新發送請求,有一個“集合”功能,用于存儲所有請求相同的API/域。
- (5)項目地址:https://www.getpostman.com/
Postman安裝使用
- 首先進入Postman插件頁面:
https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop - 點擊“添加至CHROME”按鈕,即可自動下載安裝。
使用Postman
瀏覽器中輸入 chrome://apps/ , 找到并打開Postman
Github地址
代碼地址: https://github.com/yangshangwei/o2o
總結
以上是生活随笔為你收集整理的实战SSM_O2O商铺_05集成SSM后验证DAO层、Service层、Controller层的配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实战SSM_O2O商铺_04自下而上逐步
- 下一篇: 实战SSM_O2O商铺_06logbac