본문 바로가기
Framework/AJAX

AJAX 강의 6-3장 - JsUnit 활용/setUp & tearDown 메소드

by windrises 2007. 6. 29.
setUp 메소드는 JsUnit 에서 테스트 메소드를 실행하기 전에 호출된다. 즉 테스트 하기 위한 설정값을 설정할때 씌인다. 반면 tearDown 메소드는 테스트 메소드를 실행한 후에 호출된다. 즉 테스트가 끝나고 값을 초기화 하기 위해 호출된다.

두 메소드는 JUnit 프레임웍에도 존재한다. 하지만 두 프레임웍에서의 메소드 구현에는 중요한 차이점이 존재한다. JUnit 에서는 테스트 마다 Test 클래스의 인스턴스가 새로 생성되기 때문에 멤버의 값이 항상 초기화 되지만 JsUnit 에서는 매 테스트 마다 값이 보존된다. 그렇기 때문에 더더욱 JsUnit 에서는 setUp 및 tearDown 메소드가 중요하다. setUp 및 tearDown 메소드는 하나의 테스트 메소드 실행 전과 후에 한번씩 수행된다. 테스트 메소드가 n 개 라면 테스트 메소드 실행 전과 후에 각각 n 번의 setUp, tearDown 메소드가 실행되는 것이다.


또다른 중요한 차이점 이라면 JUnit 에서는 테스트 실행 순서가 보장되지 않는다. 하지만 JsUnit 에서는 테스트 페이지에 선언된 순서의 역순으로 실행된다.


예제를 살펴보자.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>A Simple Test Page</title>
 <script language="javascript" src="../jsunit/app/jsUnitCore.js"></script>
 <script language="javascript" src="js/sample.js"></script>
 <script language="javascript">

 function testValidArgs(){
      assertEquals("2 + 2 is 4", 4, addTwoNumbers(2, 2));
    }

 function setUp(){
   document.getElementById("value1").value = "2";
   document.getElementById("value2").value = "2";
 }

 function tearDown(){
   document.getElementById("value1").value = "";
   document.getElementById("value2").value = "";
 }
 
 function addNumbers(){
   var v1 = document.getElementById("value1").value;
   var v2 = document.getElementById("value2").value;
   return addTwoNumbers(v1, v2);
 }
 </script>
  </head>
  <body>
    <form action="#">
   <input type="text" id="value1"/>
   <input type="text" id="value2"/>
   <input type="button" value="Add" onclick="addNumbers()"/>
 </form>
  </body>
</html>


<setUpTearDown.html 의 전체 소스 코드>


위 샘플을 보면 setUp 메소드는 테스트 메소드인 testValidArgs 이 샐행되기 전에 value1, value2 라는 폼요소에 "2" 값을 설정하고 있으며, tearDown 메소드는 testValidArgs가 실행된 후에 두 폼요소의 값을 "" 으로 초기화 하고 있음을 알 수 있다. JsUnit 으로 테스트 해보면 실행결과를 알 수 있을 것이다.