Struts 2.3.14 JUnit测试 [英] Struts 2.3.14 junit test
问题描述
我正在为我的应用程序使用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:49)
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屋!