달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

http://jwebunit.sourceforge.net

jWebUnit이란 ?

jWebUnit은 웹 어플리케이션을 위한 acceptance test 생성을 위한 편의를 제공하는 자바 프레임워크이다.

jWebUnit은 acceptance test 생성을 위해 HttpUnit, JUnit으로 부터 파생되었다.

jWebUnit이 제공하는 기능 ?

jWebUnit은 웹 어플리케이션 네비게이션, 정합성 확인을 위한 assertion을 등을 포함한 high level API를 제공한다. jWebUnit의 API는 링크를 이용한 네비게이션, 폼 입력 및 서밋, 테이블 내용 validation 및 비지니스 웹 어플리케이션 특징을 포함한다. jWebUnit API는 내부적으로 HttpUnit을 이용한다. jWebUnit은 간단한 네비게이션, 바로 사용 가능한 assertion등을 통해 HttpUnit, JUnit만을 사용했을때 보다 빨리 테스트를 생성할 수 있도록 한다.

아래는 jWebUnit을 이용한 테스트 코드와 HttpUnit, JUnit만을 사용한 테스트 코드이다. 테스트는 HttpUnit 홈 페이지를 구글에서 검색하고, 해당 페이지로 네비게이트하고 사용자 메뉴얼로의 링크가 있는지 조사한다.

먼저 JUnit/HttpUnit Test를 이용한 테스트 코드는 아래와 같다.

public class SearchExample extends TestCase {
  public void testSearch() throws Exception {
     WebConversation wc = new WebConversation();
     WebResponse resp = wc.getResponse( "http://www.google.com");
     WebForm form = resp.getForms()[0];
     form.setParameter("q", "HttpUnit");
     WebRequest req = form.getRequest("btnG");
     resp = wc.getResponse(req);
     assertNotNull(resp.getLinkWith("HttpUnit"));
     resp = resp.getLinkWith("HttpUnit").click();
     assertEquals(resp.getTitle(), "HttpUnit");
     assertNotNull(resp.getLinkWith("User's Manual"));
  }
}

위의 코드를 jWebUnit을 이용하여 구현한 테스트 코드는 아래와 같다.

public class JWebUnitSearchExample extends WebTestCase {
  public JWebUnitSearchExample(String name) {
     super(name);
  }

  public void setUp() {
     getTestContext().setBaseUrl("http://www.google.com");
  }

  public void testSearch() {
     beginAt("/");
     setFormElement("q", "httpunit");
     submit("btnG");
     clickLinkWithText("HttpUnit");
     assertTitleEquals("HttpUnit");
     assertLinkPresentWithText("User's Manual");
  }
}

java script error 무시하기

  protected void setUp() throws Exception {
       super.setUp();

       getTestContext().setBaseUrl("http://oracle.kyobodirect.com:8801");

       HttpUnitOptions.setExceptionsThrownOnScriptError(false);
  }

한글을 이용하여 값을 비교하기


  private String encodeCharSet(String s) {
       try {
           return new String(s.getBytes("EUC_KR"), "8859_1");
       } catch (UnsupportedEncodingException e) {
           e.printStackTrace();
           throw new RuntimeException(e);
       }
  }

  public void testLogIn() {
       beginAt("/login.jsp");

       setFormElement("id", "myid");
       setFormElement("password", "mypassword");

       submit();

       assertTitleEquals(encodeCharSet("환영합니다."));

  }

jWebUnit의 보다 구체적인 사용예를 위해 jsp 파일과 테스트 코드를 첨부한다.

:
Posted by codetemplate