Spring MVC控制器JUnit測試

JUnit測試Spring MVC控制器并非易事 。 但是最近,一個新項目 (即將在Spring推出)提供了新工具來簡化此工作。 這篇文章說明了如何通過JUnit測試來測試一個簡單的控制器。

該代碼是JUnit Testing Spring Service和DAO(帶有內存數據庫)中使用的代碼的變體。 可從Spring-MVC-JUnit-Testing目錄中的Gihut獲得。

測試配置類

這些與Service和DAO測試所需的相同。

控制者

我們的控制器:

@Controller
public class MyController {@Autowiredprivate MyService myService;@RequestMapping(value = '/')public String home(Model model) {return 'index';}@RequestMapping(value = '/roundtrip')public String persistenceStatus(Model model) {MilliTimeItem retr = myService.createAndRetrieve();model.addAttribute('RoundTrip', retr);return 'roundtrip';}}


控制器測試

下面創建一個MockMvc實例來測試模擬的用戶請求:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={ JpaTestConfig.class, TestConfig.class })
public class MyControllerTest {private MockMvc mockMvc;@Beforepublic void setup() {mockMvc = MockMvcBuilders.annotationConfigSetup(JpaTestConfig.class, TestConfig.class).build();}@Testpublic void testHome() throws Exception {mockMvc.perform(get('/')).andExpect(status().isOk()).andExpect(forwardedUrl('WEB-INF/pages/index.jsp'));}@Testpublic void testPersistenceStatus() throws Exception {mockMvc.perform(get('/roundtrip')).andExpect(status().isOk()).andExpect(forwardedUrl('WEB-INF/pages/roundtrip.jsp')).andExpect(model().attributeExists('RoundTrip'));}}

/請求測試返回的狀態以及到JSP頁面的URL映射。 / roundtrip請求確保返回的模型確實包含Roundtrip屬性。

依存關系

Spring MVC測試工件尚無法從maven的中央存儲庫中獲得。 它應該從另一個存儲庫獲得:

<repositories><repository><id>spring.test-mvc</id><url>http://repo.springsource.org/libs-milestone</url></repository></repositories>

所需的依賴項是:

<dependency><groupId>org.springframework</groupId><artifactId>spring-test-mvc</artifactId><version>1.0.0.M1</version><scope>test</scope>
</dependency>
<dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-library</artifactId><version>1.3</version><scope>test</scope>
</dependency>

更多春天相關的帖子在這里 。

參考: 技術說明博客上的JCG合作伙伴 Jerome Versrynge提供的Spring MVC Controller JUnit Testing 。


翻譯自: https://www.javacodegeeks.com/2012/10/spring-mvc-controller-junit-testing.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371452.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371452.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371452.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java基礎03變量和基本數據類型

package cn.bdqn.test;/*** * author 小豆腐* * 變量&#xff1a;會變化的量&#xff1f;&#xff1f;* 一個數據在內存中存儲空間的表示&#xff01;在運行期間可以動態改變&#xff01;* * 關鍵字:在java中已經被使用或者定義的單詞&#xff01;不能作為變量名&#xff01…

5.set集合

list_1 [1,2,3,4,5]list_2 [1,3,5,7,9]#列表轉成set集合set_1 set(list_1)set_2 set(list_2)#交集print(set_1.intersection(set_2))print(set_1 & set_2)#判斷沒有交集print(set(["a","b"]).isdisjoint(set_1))#并集print(set_1.union(set_2))pri…

JavaFX中基于表達式的PathTransitions

在JavaFX中&#xff0c;您可以使用PathTransition對象為路徑上的節點設置動畫。 PathTransitions使用Shape對象描述它們需要沿其動畫的路徑。 JavaFX提供了各種類型的形狀&#xff08;例如&#xff0c;多邊形&#xff0c;圓形&#xff0c;多邊形&#xff0c;路徑&#xff09;。…

html 顯示視頻列表,dvd光碟制作節目軌菜單布局,不要視頻縮略圖,只顯示文件列表...

“如何在刻錄視頻光盤時自定義制作菜單&#xff1f;實現的效果就是當光盤插入DVD影碟機播放時&#xff0c;首先會出現一個所有視頻文件列表的菜單(節目軌菜單)&#xff0c;就相似于音樂CD曲目表一樣&#xff0c;不需要有視頻縮略圖&#xff0c;可通過遙控器選擇性播放列表中某一…

v3學院教你學習-task和function的異同

v3學院教你學習-task和function的異同 task&#xff08;任務&#xff09;與function&#xff08;函數&#xff09;的不同 任務與函數主要有以下四點不同&#xff1a; l 函數只能與主模塊共用一個仿真時間單位&#xff0c;而任務定義自己的仿真時間單位。 l 函數不能啟動任務&am…

Spring事件的觀察者模式

介紹 觀察者模式的本質是“定義對象之間的一對多依賴關系&#xff0c;以便當一個對象改變狀態時&#xff0c;其所有依賴關系都會得到通知并自動更新。” GoF。 觀察者模式是發布/訂閱模式的子集&#xff0c;它允許許多觀察者對象查看事件。 可以在不同的情況下使用此模式&#…

jQuery選擇什么版本 1.x? 2.x? 3.x?

目前jQuery有三個大版本&#xff1a; 1.x&#xff1a;兼容ie678,使用最為廣泛的&#xff0c;官方只做BUG維護&#xff0c;功能不再新增。因此一般項目來說&#xff0c;使用1.x版本就可以了&#xff0c;最終版本&#xff1a;1.12.4 (2016年5月20日)2.x&#xff1a;不兼容ie678&a…

Delta DVP 系列 PLC 各裝置 Modbus 地址

此Modbus地址表以 1 為基礎地址 Device Range Type DVP address (Hex) Modbus address (Dec) Effective ES/EX/SS SA/SX/SC EH S 000~255 bit 0000~00FF 000001~000256 0~127 0~1024 0~1024 S 256~511 bit 0100~01FF 000247~000512 S 512~767 bit 020…

Reporting Service 2008 “報表服務器數據庫內出錯。此錯誤可能是因連接失敗、超時或數據庫中磁盤空間不足而導致的”...

今天遇到了兩個關于Reporting Service的問題&#xff0c; 出現問題的環境為Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) 。具體情況請見下面描述。 1&#xff1a;在修改報表的訂閱后&#xff0c;保存時出現下面錯誤&#xff1a; 提示&#xff1a;報表服務器數據庫…

Java 7:HashMap與ConcurrentHashMap

從我過去有關性能的文章和HashMap案例研究中可能已經看到&#xff0c;Java線程安全性問題可以很輕松地使Java EE應用程序和Java EE容器崩潰。 在對Java EE性能問題進行故障排除時&#xff0c;我觀察到的最常見問題之一是由非線程安全的HashMap get&#xff08;&#xff09;和pu…

計算機網絡按信息傳輸介質的性能來劃分,大學計算機基礎練習題網絡技術.doc...

網絡技術一、單選&#xff1a;1. 在計算機網絡中&#xff0c;表征數據傳輸可靠性的指標是( )。A?誤碼率 B?頻帶利用率C?信道容量 D?傳輸速率參考答案&#xff1a;A2. 和通信網絡相比&#xff0c;計算機網絡最本質的功能是( )。A?數據通信 B?資源共享C?提高計算機的可靠性…

【2017-03-02】集合、結構體、枚舉

集合和數組的差別&#xff1a; 數組&#xff1a;同一類型&#xff0c;固定長度集合&#xff1a;不同類型&#xff0c;不固定長度 一、普通集合&#xff08;弱類型&#xff09; 1、ArryList 使用集合首先要引用命名空間。 或者在ArryList上右鍵找“解析”。 2、集合的定義&#…

Hibernate懶/急加載示例

這篇文章將重點討論為什么以及如何在應用程序中使用稱為LAZY和EAGER加載的概念&#xff0c;以及如何使用Spring的休眠模板以EAGER方式加載LAZY實體。 當然&#xff0c;正如標題本身所暗示的那樣&#xff0c;我們將通過一個示例來說明這一點。 場景就是這樣&#xff1b; 您是一…

讀者使用計算機終端是指,全國2010年10月自學考試管理系統中計算機應用真題及答案...

A.上級模塊向下級模塊傳遞控制信號B.下級模塊對上級模塊傳遞控制信號C.同級模塊之間傳遞數據或控制信號D.上級模塊向下級模塊傳遞數據信號18.“客戶”數據表結構為&#xff1a;客戶編號、手機號、購物金額&#xff0c;合理的字段類型為( )A.字符型&#xff0c;字符型&#xff0…

軟件測試HW02-------fault error failure

程序一 問題一&#xff1a;i應該>0&#xff1b; 問題二&#xff1a; x為空 問題三&#xff1a;test x[2, 3, 5]; y 3;問題四:test: x[2]; y 3&#xff1b;程序二問題一&#xff1a;循環應該反過來;問題二&#xff1a;無;問題三&#xff1a;test:x[1];問題四:test: x[1,2,3…

Mathematica圖片局部變色

這篇博客來源于Stack-Exchange上的一個帖子&#xff0c;問題描述如下&#xff1a;如何將圖中的紅球變為藍球&#xff1f; 這個問題下面有很多答案&#xff0c;我選了最好的一個答案&#xff0c;代碼如下 img Import["C:/Users/1/Desktop/red.jpg"]; getReds[x_Image…

在WebLogic 12c上運行RichFaces

我最初以為我可以在幾個月前寫這篇文章。 但是我最終被不一樣的事情所淹沒。 其中之一是&#xff0c;它無法像我在4.0版本中那樣簡單地啟動RichFaces展示柜。 有了所有的JMS magic和不同的提供者檢查&#xff0c;這已經成為簡單構建和部署它的挑戰。 無論如何&#xff0c;我愿意…

Spring Boot系列教程一:Eclipse安裝spring-tool-suite插件

一.前言 一直使用eclipse&#xff0c;個人習慣選用Eclipsespring-tool-suite進行開發&#xff0c;特別注意Eclipse要選用對應的spring-tool-suite進行安裝&#xff0c;這點筆者浪費了好長時間&#xff0c;以下為對應的版本。eclipse-kepler.4.3.1–>springsource-tool-suite…

湖南工程學院計算機網絡考試,湖南工程學院 計算機網絡期末試卷試題

湖南工程學院 計算機網絡期末試卷試題湖南工程學院 計算機網絡 期末試題(計算機10級&#xff0c;90%的題目)1 從邏輯功能上看,計算機網絡可分為哪兩個子網?答&#xff1a;通信子網和資源子網 2 數據鏈路層的最基本功能答&#xff1a;數據鏈路層的最基本的功能是向該層用戶提供…

C#設計模式(11)——外觀模式(Facade Pattern)

一、引言 在軟件開發過程中&#xff0c;客戶端程序經常會與復雜系統的內部子系統進行耦合&#xff0c;從而導致客戶端程序隨著子系統的變化而變化&#xff0c;然而為了將復雜系統的內部子系統與客戶端之間的依賴解耦&#xff0c;從而就有了外觀模式&#xff0c;也稱作 ”門面“…