Struts2 Action的單元測試

  對Struts2進行單元測試,以struts 2.2.1.1爲例 ,可以使用struts2發行包中的struts2-junit-plugin-2.2.1.1.jar,它裏面提供了兩個類StrutsTestCase、StrutsSpringTestCase,分別提供對純struts應用和struts+spring整合時的單元測試支持。下面分別說明。

 

1.StrutsTestCase

   首先準備一個純struts2工程,建立工程過程略,但有如下的類:

   Account.java,是bean

  

   AccountAction.java

  

   測試類:

  TestAccountAction.java

    

   測試邏輯比較簡單,action中的validate方法會保證用戶名長度在5--9之間。

   定義struts.xml,放在類路徑的根目錄下,而非web-inf/classes下,否則會找不到,不會加載你定義的內容。

  

   至於action/result的定義中用到的jsp頁面,不必真實存在,保持不爲空就行,否則,action測試的時候,會說result未定義之類的錯誤,因爲此測試會模擬action真實狀態下的運行。運行,一切OK。

   正因爲會模擬真實狀態下的運行,所以攔截器也會正常被觸發,下面再定義一個攔截器測試一下:

   MyInterceptor.java

  

  

   修改一下struts.xml,加入攔截器的定義:

   <package name="testit" namespace="/" extends="struts-default">
        <interceptors>
            <interceptor name="testInterceptor" class="interceptor.MyInterceptor"/>
        </interceptors>
        <action name="createaccount" class="action.AccountAction">
            <result name="success">/index.jsp</result>
            <result name="input">/createaccount.jsp</result>
            <interceptor-ref name="defaultStack"/>
            <interceptor-ref name="testInterceptor"/>
        </action>
    </package>

   運行,控制檯會輸出:

   before processing

   bye bye execute

 

    使用的jar包如下圖:

  

   都是struts發行包提供的,其它不相關的jar不要加,尤其是以plugin.jar結尾的文件,更不要加struts2-spring-plugin-2.2.1.1.jar,加了會加載相關的東西,但這裏卻提供不了,導致測試無法運行。實際spring-beans-2.5.6.jar和spring-context-2.5.6.jar也不是必須的,但加了也無所謂,在StrutsSpringTestCase是需要的。另外,web.xml不需要配置,根本不會去這裏找配置信息。

  

2.StrutsSpringTestCase

  這個和前面的過程類似,需要的類分別如下。

  MathAction.java

 

  MathService.java

 

  測試類TestMathAction,測試一下MathService.add是否能正確地返回兩個數相加的值。

 

 

  這裏有一個小trick,默認情況下,applicationContext.xml也要放在classpath的根目錄下,但如果項目需要不放在那裏,就要覆蓋getContextLocations方法返回其class path,開頭可以有也可以沒有“/”,這裏我放在包spring下,所以就返回spring/applicationContext.xml,至於struts和spring整合的配置就不用寫了,想必大家都會。需要的jar在上面的基礎上,加入struts2-spring-plugin-2.2.1.1.jar就行了,對了,兩種測試都需要jsp-api.jarservlet-api.jar,去tomcat裏copy一份即可,junit.jar也是需要的(廢話?!)

 

   參考:https://cwiki.apache.org/WW/struts-2-junit-plugin-tutorial.html

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章