Тестовый пример для Struts2 2.3.24 с использованием Strut2SpringTestCase (объект запроса идет как null)

Я пытаюсь написать блок-тесты для моих классов действий Struts2. Класс My Test расширяет SpringStrutsTestCaseкласс. Я могу установить объект запроса и получить его действие, и действие также вызывает вызов, но когда он пытается получить параметры, заданные в объекте запроса, он выдает исключение нулевого указателя, т. Е. Объект запроса имеет значение null. Ниже мой, как выглядит мой тестовый класс. Любая помощь действительно ценится.

    import org.apache.struts2.StrutsSpringTestCase;
    import org.junit.Test;

    import com.opensymphony.xwork2.ActionProxy;

    public class testClass extends StrutsSpringTestCase {

    @Test
    public void test1() throws Exception {
        try {
            request.setParameter("p1", "v1");
            request.setParameter("p2", "v2");
            ActionProxy proxy = getActionProxy("/actionName");
            MyActionClass loginAction = (MyActionClass) proxy.getAction();
            loginAction.execute();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public String[] getContextLocations() {
        String[] arr = new String[] { "one.xml", "two.xml", "three.xml" };
        return arr;
    }
}

Вот мой класс действий.

public class MyAction extends ActionSupport{
private String p1;
private String p2;

/*
Gettere and Setters of p1 and p2
*/
    public String execute() throws Exception {
        // return "success";
        logger.info("Login Action Called");
        String pv1= (String) request.getParameter("p1");// If I get value using this.pv1 it works fine but with this code it doesn't.
        String pv2= (String) request.getParameter("p2");
        return "success";
    }
}

unit-testing,struts2,junit4,el,

0

Ответов: 1


1 принят

Чтобы проверить вызов вызова, вам необходимо вызвать executeметод ActionProxy. Вызывая executeсвое действие, вы просто вызываете этот конкретный метод класса действия, а не действие S2 вместе с перехватчиками, результатами и т. Д.

Правильный способ:

ActionProxy proxy = getActionProxy("/actionName");
proxy.execute();

BTW, если вы используете JUnit 4, StrutsSpringJUnit4TestCaseвы должны использовать вместо него StrutsSpringTestCase.

модульное тестирование, struts2, junit4, эль,
Похожие вопросы