Spring MVC 單元測試
常規的方法則是啟動WEB伺服器 測試 出錯 停掉WEB 改程式碼 重啟WEB 測試
大量的時間都浪費在WEB伺服器的啟動上
今天給大家介紹一種不用啟動WEB 直接採用單元測試的方法來測試請求是否準確
該方法基於SpringMVC 與 Spring Test 框架
- package com.spring;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.util.ArrayList;
-
import java.util.List;
- import java.util.Map;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.json.JSONObject;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.http.MediaType;
-
import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.ResponseBody;
-
import
- import org.springframework.web.context.WebApplicationContext;
- import org.springframework.web.context.support.WebApplicationContextUtils;
- import org.springframework.web.servlet.ModelAndView;
- @Controller
- @RequestMapping(value = "/spring")
- publicclass Action {
- @Autowired
- Teacher teacher;
- // spring 支援restful的格式
- @ResponseBody
- @RequestMapping(value = "/rest/{ownerId}.do", method = RequestMethod.GET)
- public String findOwner(@PathVariable String ownerId, Model model,
- HttpServletResponse rep) throws IOException {
- return ownerId;
- }
- @RequestMapping(value = "/test.do", method = RequestMethod.GET)
- public String testa(Model model, HttpServletResponse rep)
- throws IOException {
- model.addAttribute("abc", "efd");
- model.addAttribute(teacher);
- return"a";
- }
- @ResponseBody
- // 理論上可以@ResponseBody 支援直接返回teacher物件 但是3.2裡有問題 我們還是老實返回字串吧
- @RequestMapping(value = "/testb.do", method = RequestMethod.GET)
- public String testb(Model model, HttpServletResponse rep,
- HttpServletRequest req, String ex) throws IOException {
- // WEB中獲得SPRING容器
- WebApplicationContext wac = WebApplicationContextUtils
- .getRequiredWebApplicationContext(req.getServletContext());
- returnnew JSONObject(wac.getBean(Teacher.class)).toString();
- }
- @ResponseBody
- @RequestMapping(value = "/post.do", method = RequestMethod.POST)
- public String post(Model model, HttpServletResponse rep,
- HttpServletRequest req, String ex) throws IOException {
- returnnew JSONObject(req.getParameterMap()).toString();
- }
- }
再上單元測試程式碼
- import java.awt.print.Printable;
- import java.io.IOException;
- import javax.servlet.http.HttpServletResponse;
- import org.junit.Before;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.http.MediaType;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
- import org.springframework.test.context.web.WebAppConfiguration;
- import org.springframework.test.web.servlet.MockMvc;
- import org.springframework.test.web.servlet.ResultHandler;
- import org.springframework.test.web.servlet.ResultMatcher;
- import org.springframework.ui.Model;
- import org.springframework.test.context.transaction.TransactionConfiguration;
- import org.springframework.transaction.annotation.Transactional;
- importstatic org.springframework.test.web.servlet.result.MockMvcResultHandlers.*;
- importstatic org.springframework.test.web.servlet.setup.MockMvcBuilders.*;
- importstatic org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
- importstatic org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.context.WebApplicationContext;
- @RunWith(SpringJUnit4ClassRunner.class)
- @WebAppConfiguration
- @ContextConfiguration(locations = { "classpath:applicationContext.xml" })
- //當然 你可以宣告一個事務管理 每個單元測試都進行事務回滾 無論成功與否
- @TransactionConfiguration(defaultRollback = true)
- //記得要在XML檔案中宣告事務哦~~~我是採用註解的方式
- @Transactional
- publicclass ExampleTests {
- @Autowired
- private WebApplicationContext wac;
- private MockMvc mockMvc;
- @Before
- publicvoid setup() {
- // webAppContextSetup 注意上面的static import
- // webAppContextSetup 構造的WEB容器可以新增fileter 但是不能新增listenCLASS
- // WebApplicationContext context =
- // ContextLoader.getCurrentWebApplicationContext();
- // 如果控制器包含如上方法 則會報空指標
- this.mockMvc = webAppContextSetup(this.wac).build();
- }
-
相關推薦
Spring MVC 單元測試異常 Caused by: org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file
read cti exe document ive pri simple fff ces Sping 3.2.8.RELEASE + sping mvc + JDK 1.8運行異常。 java.lang.IllegalStateException: Failed to
Spring mvc單元測試
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.spring
spring mvc單元測試(帶請求引數)
package com.gpl.test; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springfr
Spring MVC 單元測試
常規的方法則是啟動WEB伺服器 測試 出錯 停掉WEB 改程式碼 重啟WEB 測試 大量的時間都浪費在WEB伺服器的啟動上 今天給大家介紹一種不用啟動WEB 直接採用單元測試的方法來測試請求是否準確 該方法基於SpringMVC 與 Spring
Spring mvc 單元測試Demo
以前用struts框架的時候,給HTTP介面做測試,只能在瀏覽器上拼url和引數測,十分麻煩,而且不能自動化。但是用了Spring mvc之後,這種狀況改變了。spring-test模組對spring mvc的介面提供了良好的單元測試框架支援。有了這個框架,便可以對H
Spring 4 MVC 單元測試例子
首先,要有一個Spring MVC專案,不會的話,點這裡看教程。 加入 maven 依賴: <dependency> <groupId>junit</groupId> <a
Spring-test單元測試
xtend manage 單元 true nconf ret trace ace oca package com.OnlineRetailers.service.base; import org.junit.runner.RunWith; import org.spri
spring boot 單元測試(附:單元測試斷言彙總)
Spring boot 單元測試: 常用的程式測試方法有: 1、直接通過在瀏覽器輸入網址訪問; 2、通過postman工具來測試; 3、通過編寫python指令碼來進行測試; 但這樣經常會一測就要測一整塊,相對單元測試來說定位問題比較麻煩,單元測試能幫助我們拆分方法,單獨測試
Spring Boot單元測試&網路請求
實際開發中,Junit單元測試是必不可少的。在spring-boot 中可以通過測試模組(spring-boot-starter-test)快速使用單元測試功能。 開始 本示例在 spring boot 1.5.4 版本測試通過 1、pom.xml中新增配置spring-b
spring boot單元測試之druid NullPointException
最近在使用spring boot 對 Controller 進行單元測試時,發現 druid 竟然丟擲了空指標異常。原因是,使用了druid的監控,需要經過druid的 Filter 攔截器,但是spr
利用MAVEN搭建最小依賴包的spring mvc工程測試
用eclipse新建maven工程 2、可能需要調整jdk,根據不通的環境,做相應調整 。引入tomcat執行環境。 3、開啟專案工程目錄 開啟 pom.xml 檔案 修改pom.x
Maven專案中引入spring-test單元測試 @RunWith與@ContextConfigration報錯
場景 在SSM專案整合時引入spring-test單元測試時, @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:applicationContext.xml"}) 報錯
spring boot 單元測試
引入maven依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo
spring Junit單元測試 bean 無法注入的問題
本人菜鳥在學習ssh 過程 ,遇見問題 向各位大佬請教。進行單元測試 爆出下面提示: 貼出下面配置資訊: applicationContext.xml 實現service 介面類 實現dao介面類 單元測試 進過本菜鳥的各種錯嘗試,上面的配置檔案內容沒有錯誤,只是整合框架的過
JUnit4結合spring做單元測試
做單元測試非常簡單,結合spring做單元測試也很簡單。 首先,導包 先看一下目錄結構: 下面是測試基類(): package pms_test; import org.junit.Test; import org.junit.runner.RunWith; im
Spring Boot 單元測試,注入失敗,報空指標錯誤
我們在使用專案的時候,常常需求去單元測試,去測試我們寫的介面是否可以正常執行.自己在練習Spring Boot 搭建 Redis的時候進行測試.下面是測試類./** * @author jins * @date on 2018/5/6. */ @RunWith(Spri
Spring的單元測試
一、在已經通過逆向工程生成相應類、介面、mapper後,希望向類中注入屬性並新增自己的方法 (1)向類中注入屬性: private Department department; 向員工
Spring教程第二篇:Spring-Test(單元測試)
在Spring的框架下,做單元測試的兩種辦法: 一、使用spring中對Junit框架的整合功能 除了junit4和spring的jar包,還需要spring-test.jar。引入如下依賴: <dependency>
spring3 mvc 單元測試
/* * 檔名:TestMVC.java * 版權:Copyright 2012-2012 Li Huaxin Tech. Co. Ltd. All Rights Reserved. * 描述: TestMVC.java * 修改人:lihuaxin * 修改時
Spring-Controller單元測試
一般測試驅動開發專案中,我們會在Maven中建立一個專案檔案和一個一一對應的測試專案檔案。每寫好一個模組,先對其進行單元測試,再整合到現有的系統中。 針對Controller、Service、Dao三層架構來說,我們最常對Service和Dao進行單元測試。然而Contro