1

次のようないくつかの Junit4 テストを作成しました。

public class TestCampaignList extends StrutsJUnit4TestCase<Object> {

    public static final Logger LOG = Logger.getLogger(TestCampaignList.class.getName());

    @Before
    public void loginAdmin() throws ServletException, UnsupportedEncodingException {
        request.setParameter("email", "nitin.cool4urchat@gmail.com");
        request.setParameter("password", "22");
        String response = executeAction("/login/admin");
        System.out.println("Login Response :  " + response);
    }

    @Test
    public void testList() throws Exception {
        request.setParameter("iDisplayStart", "0");
        request.setParameter("iDisplayLength", "10");
        String response = executeAction("/campaign/list");
        System.out.println("Reponse : " + response);

    }
}

どちらのアクションも JSON の結果を返し、executeActionjavadoc は次のように述べています。

For this to work the configured result for the action needs to be FreeMarker, or Velocity (JSPs can be used with the Embedded JSP plugin)

JSON の結果を処理できないように見えるため、2 番目のアクションの実行では、次のように累積された結果が表示されます。result_for_second_action= result1 concatenate result2

executeAction()以前のすべての実行からの JSON 応答を連結するのではなく、実際の JSON 応答を返すソリューションはありますか。

4

1 に答える 1

2

@Beforeこれは、メソッドでアクションを実行しているためです。そのようにして、setUpメソッドとテストメソッドStrutsJUnit4TestCaseの間でメソッドが呼び出されず、loginAdmin以前のリクエストパラメーターが再度渡されます。setUpテストメソッドでメソッドを自分で呼び出すことができます。あなたの場合、実際にinitServletMockObjectsメソッドを呼び出して、リクエストなどの新しいモック サーブレット オブジェクトを作成できます。

@Test
public void testList() throws Exception {
    setUp();
    // or 
    // initServletMockObjects();

    request.setParameter("iDisplayStart", "0");
    request.setParameter("iDisplayLength", "10");
    String response = executeAction("/campaign/list");
    System.out.println("Reponse : " + response);

}
于 2013-11-13T21:16:48.990 に答える