Struts 2.3.14 JUnit测试 [英] Struts 2.3.14 junit test

查看:78
本文介绍了Struts 2.3.14 JUnit测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为我的应用程序使用Struts 2.3.14 ...我需要在我的应用程序中进行一些单元测试...所以我正在使用junit4 ...但是当我在测试中使用ActionProxy时,它将显示NullPointerException ...

I'm using Struts 2.3.14 for my application... I need some unit test in my application... so I'm using junit4... but when I use ActionProxy in my test, it will show NullPointerException...

我的测试代码是:

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 ... 请帮助我改善..... 提前谢谢...

How can i send request to the action class and how to use ActionProxy... Please Help me to Improve..... Thankyou in advance......

我的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

推荐答案

您正在使用junit4,因此在这种情况下使用的正确测试用例类将是StrutsJUnit4TestCase.它具有在启动时需要运行的注释,以运行代码所需的初始化模拟对象.特定的获取动作代理需要模拟request.

You are using junit4, so the correct test case class to use in this case would be StrutsJUnit4TestCase. It has annotations required to run on start up to init mock objects necessary to run your code. Particular getting action proxy requires the mock request.

这篇关于Struts 2.3.14 JUnit测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆