Struts 2.3.14 джунит тест

Я использую Struts 2.3.14 для своего приложения... Мне нужен тестовый модуль в моем приложении... поэтому я использую junit4... но когда я использую ActionProxy в моем тесте это покажет 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... Пожалуйста, помогите мне улучшить..... Спасибо заранее......

мой файл 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,

Другие вопросы по тегам