日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

单元测试Struts2Spring项目的Action和Service(包含源码)

發(fā)布時(shí)間:2023/12/18 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单元测试Struts2Spring项目的Action和Service(包含源码) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近,認(rèn)真實(shí)踐了單元測試Struts2、Spring等Java項(xiàng)目,今天特意寫的是單元測試Struts2Spring項(xiàng)目的Action和Service。

由于已經(jīng)寫過不少Web開發(fā)框架單元測試的代碼,加上上次從頭搭建環(huán)境并發(fā)表了"單元測試Struts2的Action(包含源碼) ",沒有遇到太多問題。

特別說明:本文是原創(chuàng),搭建環(huán)境、寫代碼、運(yùn)行,都是實(shí)踐并且正確的。

本文是靠譜的,而非簡單的復(fù)制-粘貼。

1.特別說明。

? http://blog.csdn.net/fansunion/article/details/12118043? 單元測試Struts2的Action(包含源碼)

? 這篇文章主要講述的是如何 使用JUnit等單元測試框架測試 Struts2這一個(gè)框架的Action。

? 而本篇側(cè)重Struts2和Spring這2個(gè)框架集成的情況。

? 更多框架集成的單元測試Demo文章,請關(guān)注本博客后續(xù) 單元測試相關(guān)文章。

2.新建工程,加入相關(guān)jar包。

? Struts相關(guān)jar包

? Spring相關(guān)jar包

? JUnit, spring-test-3.2.3.RELEASE.jar,struts2-junit-plugin-2.2.3.1.jar等測試相關(guān)jar包

? Tomcat的Servlet/JSP jar包

3.新建Action。

package action; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; /*** 一個(gè)簡單的Action。* @author FansUnion**/ @Controller public class UserAction { @Autowiredprivate UserService userService; public String getName() {userService.getName("FansUnion");return "success";} }


4.新建Service。

package action; import org.springframework.stereotype.Service; @Service public class UserService { /*** 簡單的返回用戶名*/public String getName(String name) {// 這個(gè)地方實(shí)際上應(yīng)該調(diào)用Dao持久層的代碼,在此簡化了。// 本文只是單元測試Struts2Spring整合中,Struts的Action和Spring注入的Service。// Struts2Spring+Hibernate/Mybatis將在后續(xù)篇章中介紹。return name;} }


5.單元測試Action。

package unittest; import org.apache.struts2.StrutsSpringTestCase; import org.junit.Test; import action.UserAction; import com.opensymphony.xwork2.ActionProxy; /*** 測試StrutsSpring集成的時(shí)候,需要繼承StrutsSpringTestCase這個(gè)類,* 而單獨(dú)測試Struts的時(shí)候,繼承StrutsTestCase。** @author http://blog.csdn.net/fansunion/**/ public class ActionUnitTest extends StrutsSpringTestCase {// 重寫父類方法,指定配置文件的名字protected String[] getContextLocations() {return new String[] { "struts.xml", "applicationContext-spring.xml" };} @Testpublic void testExecute() throws Exception {ActionProxy proxy = getActionProxy("/unitTest");UserAction test = (UserAction) proxy.getAction();assertNotNull(test);String result = proxy.execute();assertEquals("success", result);} }


6.單元測試Service。

package unittest; import org.junit.AfterClass; import org.junit.BeforeClass; import org.springframework.mock.web.MockServletContext; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.XmlWebApplicationContext; /*** 測試Service的基類** @author http://blog.csdn.net/fansunion/**/ public class JUnitTestBase { public static XmlWebApplicationContext context = null; public static String[] CONFIG_FILES = { "file:src/applicationContext-*.xml" }; public JUnitTestBase() {System.out.println("JUnitTestBase");} @BeforeClasspublic static void setUp() {System.out.println("Test start…"); context = new XmlWebApplicationContext();context.setConfigLocations(CONFIG_FILES); MockServletContext msc = new MockServletContext();context.setServletContext(msc);context.refresh();msc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,context);} @AfterClasspublic static void tearUp() {System.out.println("Test end!");} } package unittest; import static org.junit.Assert.assertEquals; import org.junit.Test; import action.UserService; public class UserServiceTest extends JUnitTestBase { private UserService userService; public UserServiceTest() {userService = context.getBean(UserService.class);} @Testpublic void test() {String name = "http://FansUnion.cn";String myName = userService.getName(name);assertEquals(name, myName);} }


7.Struts2配置。

<struts> <!– Development Mode –><constant name="struts.devMode" value="true" /><constant name="struts.enable.DynamicMethodInvocation" value="false" /><constant name="struts.objectFactory" value="spring" /><constant name="struts.objectFactory.spring.autoWire" value="name" /> <package name="manager" namespace="/" extends="struts-default"> <action name="unitTest" class="userAction" method="getName"><result name="success">unitTest.jsp</result></action> </package> </struts>


8.Spring配置。

(由于是從我的就項(xiàng)目復(fù)制類的,很多配置都可以去掉,由讀者自己完成)

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:flex="http://www.springframework.org/schema/flex" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/flex classpath:/spring-flex-1.0.xsd"> <context:annotation-config /><context:component-scan base-package="*" /><aop:aspectj-autoproxy /> </beans>


9.web.xml配置。

<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!– Spring Context –><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:/applicationContext*.xml</param-value></context-param> <!– Spring Context Listener –><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener> <filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter> <filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern></filter-mapping> </web-app>


10.源碼下載。

源碼CSDN下載:http://download.csdn.net/detail/fansunion/6332361?(免積分)

有問題,可以留言,或加入群或者QQ。我抽空答復(fù)。

原文參見:http://FansUnion.cn/articles/2550

轉(zhuǎn)載于:https://www.cnblogs.com/qitian1/p/6463583.html

總結(jié)

以上是生活随笔為你收集整理的单元测试Struts2Spring项目的Action和Service(包含源码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。