Please Enable JavaScript!
Gon[ Enable JavaScript ]

junit 과 HttpUnit 을 사용한 예제

프로그래밍 툴/이클립스(Eclipse)
반응형
html 의 내용이다. test.vm

<html>

<head>

<title>form test </title>

</head>

<body>

  <form method="post" action="subscription" id="testform">

       <table>

              <tr>

                    <td>name : </td>   

                    <td><input type="text" name="name" value="name"></td>

             </tr> 

             <tr>

                    <td>email : </td>  

                    <td><input type="text" name="email" value="email"></td>

             </tr>

       </table>

       <input type="submit" name="subscribeBtn" value="Subscribe"/>

       <input type="submit" name="unsubscribeBtn" value="UnSubscribe"/>

  </form>

</body>

보는 바와 같이 입력란이 두개 있다. 거기에 값이 들어간 상태이다.
다음은 junit 테스트 java 클래스 이다.

public class HttpUnitTest extends TestCase {

   protected void setUp() throws Exception {

      super.setUp();

  }

   protected void tearDown() throws Exception{

      super.tearDown();

  }

   public void testForm() throws  Exception{

      try {

          WebConversation con = new WebConversation();

          WebRequest request = new GetMethodWebRequest("http://localhost:7001

                                /index.do?method=test");

          WebResponse response = con.getResponse(request);

          WebForm form = response.getFormWithID("testform");

          assertEquals("subscription form action", "subscription",          

                       form.getAction());

          assertEquals("subscription form method", "post",

                       form.getMethod().toLowerCase());

          assertEquals("name", "", form.getParameterValue("name"));

          assertEquals("email", "", form.getParameterValue("email"));

      } catch (RuntimeException e) {

          e.printStackTrace();

      }

   }

}

위의 테스트를 실행하기 위해선 WAS 를 실행해야한다.
그리고 실행을 하게 되면  http://localhost:7001/index.do?method=test  Action 을 취하면서
test.vm 파일을 클래스가 자동으로 읽어들여 화면에서 실행버튼을 누른것처럼 request 값을 담아
반환하게 된다.
WebForm form = response.getFormWithID("testform") 소스와 같이 test.vm 페이지에 form
id 를 testform 으로 설정했으므로 java 에서도 똑같은 이름의 파라미터를 넘긴다.
그러면 그속에 포함된 내용이 넘어올것이다.

지금 html 파일에는 name input 란에 'name' 이라는 값이있다. 그러므로 위의 소스를 실행하게 되면
assertEquals("name", "", form.getParameterValue("name")) 공백 equals 체크를 하기
때문에 에러가 날것이다.

이와같이 HttpUnit 을 사용하여 Web Application 도 다양한 경우의 수를 설정하여 편리하게 테스트를 진행해
볼수 있다.



반응형
Posted by 녹두장군1
,