2013-05-18 6 views
5

मैं अपने आवेदन के लिए स्ट्रैट्स 2.3.14 का उपयोग कर रहा हूं ... मुझे अपने एप्लिकेशन में कुछ यूनिट टेस्ट चाहिए ... इसलिए मैं जूनिट 4 का उपयोग कर रहा हूं ... लेकिन जब मैं ActionProxy का उपयोग करता हूं परीक्षण, यह NullPointerException दिखाएगा ...स्ट्रेट्स 2.3.14 जूनिट टेस्ट

अपने परीक्षण कोड है:

ActionProxy proxy=getActionProxy("/customize/saveRewards"); 
    SaveRewardsPlus rewards=(SaveRewardsPlus)proxy.getAction(); 
    request.setParameter("list[0].img_id", "1");   
    request.setParameter("list[0].tag", "Test Tag"); 
    request.setParameter("list[0].desc", "Test Desc");   
    String result=proxy.execute();   
    assertEquals("success", result); 

और मेरी लड़ाई कक्षा है:

private List<RewardsBean> list;  

public String execute() { 
    try { 
     Class.forName(DRIVER); 
     con = DriverManager.getConnection(CONSTR, USER, PWD); 
     for (RewardsBean rb : list) { 
      sql = "update rewards set tag=?,description=? where img_id=?"; 
      PreparedStatement ps = con.prepareStatement(sql); 
      ps.setString(1, rb.getTag()); 
      ps.setString(2, rb.getDesc()); 
      ps.setInt(3, rb.getImg_id()); 
      ps.executeUpdate(); 
     } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
    return SUCCESS; 
} 

/** 
* @return the list 
*/ 
public List<RewardsBean> getList() { 
    return list; 
} 

कैसे मैं एक्शन वर्ग के लिए अनुरोध भेज सकते हैं और कैसे उपयोग करने के लिए ActionProxy ... कृपया मदद मुझे सुधार करने के लिए ..... अग्रिम में ठनक ......

मेरी struts.xml फ़ाइल नीचे दी गई है .....

<struts> 
    <!-- Configuration for the default package. --> 
    <package name="default" extends="struts-default"> 
    <action name="addRewards" class="com.customize.rewards.AddRewards"> 
     <result name="success">index.jsp</result> 
    </action> 
    </package> 
    <include file="addrewards/struts-addrewards.xml"></include> 
    <include file="customize/struts-customize.xml"></include> 
</struts> 

और मेरे आयातित xml फ़ाइल नीचे दी गई है ....

<struts> 
    <package name="customize" namespace="/customize" extends="struts-default"> 
     <!--<action name="viewRewards" class="com.customize.rewards.ViewRewards"> 
      <result>/customizeRewards/viewRewards.jsp</result> 
     </action>  --> 
     <!-- New Rewards--> 
     <action name="viewRewards" class="com.customize.rewards.ViewRewards"> 
      <result>/customizeRewards/viewRewardsPlus.jsp</result> 
     </action> 
     <action name="saveRewards" class="com.customize.rewards.SaveRewardsPlus"> 
      <result name="success" type="redirect">viewRewards</result>   
     </action> 
     <!--/New Rewards--> 
     <!-- <action name="saveRewards" class="com.customize.rewards.SaveRewards"> 
      <result name="success" type="redirect">viewRewards</result>   
     </action>--> 
     <action name="deleteRewards" class="com.customize.rewards.DeleteRewards"> 
      <result name="success" type="redirect">viewRewards</result> 
     </action> 
     <action name="addRewards" class="com.customize.rewards.AddRewards"> 
      <result name="success" type="redirect">viewRewards</result> 
     </action> 
    </package> 
</struts> 

मेरी स्टैकट्रेस ....

java.lang.NullPointerException at 
org.apache.struts2.StrutsTestCase.getActionProxy(StrutsTestCase.java:130) at 
com.customize.rewards.SaveRewardsPlusTest.testExecute(SaveRewardsPlusTest.java:4‌​9) 
Testsuite: com.customize.rewards.SaveRewardsTest 

उत्तर

1

आप junit4 उपयोग कर रहे हैं, इसलिए सही परीक्षण का मामला वर्ग इस मामले में उपयोग करने के लिए StrutsJUnit4TestCase होगा। इसमें आपके कोड को चलाने के लिए जरूरी इनट मॉक ऑब्जेक्ट्स को शुरू करने के लिए आवश्यक टिप्पणियां हैं। विशेष रूप से एक्शन प्रॉक्सी प्राप्त करने के लिए नकली request की आवश्यकता होती है।

संबंधित मुद्दे