2008년 06월 01일 Posted title : [jsunit] javascript 테스팅프레임웍
홈페이지 http://www.jsunit.net/
다운로드 https://sourceforge.net/project/showfiles.php?group_id=28041
(이클립스 플러그인은 수동으로 plugin 디렉토리에 복사)
예제 http://www.jsunit.net/examples/index.html

참고할 만한 사이트: http://webjoy.kr/132
http://wiki.javajigi.net/pages/viewpage.action?pageId=4497

<html>
 <head>
  <title>Test Page for multiplyAndAddFive(value1, value2)</title>
  <script language="javascript" src="jsUnitCore.js"></script>
  <script language="javascript" src="myJsScripts.js"></script>
 </head>
 <body>
  <script language="javascript">
    function testWithValidArgs() {
        assertEquals("2 times 3 plus 5 is 11", 11, multiplyAndAddFive(2, 3));
        assertEquals("Should work with negative numbers", -15, multiplyAndAddFive(-4, 5));
    }
    function testWithInvalidArgs() {
        assertNull("A null argument should result in null", multiplyAndAddFive(2, null));
        assertNull("A string argument should result in null", multiplyAndAddFive(2, "a string"));
    }
    function testStrictReturnType() {
        assertNotEquals("Should return a number, not a string", "11", multiplyAndAddFive(2, 3));
    }
    function testWithUndefinedValue() {
        assertNull("An undefined argument should result in null", multiplyAndAddFive(2, JSUNIT_UNDEFINED_VALUE));
    }
  </script>
 </body>
</html>


의 형태로 테스트 코드 작성


샘플
jsUnitMyFirst.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JsUnit Framework tests</title>
    <script language="javascript" type="text/javascript" src="../app/jsUnitCore.js"></script>
    <script language="javascript" type="text/javascript" src="myJsScripts.js"></script>
    <script language="javascript" type="text/javascript">
     function testAdd() {
      assertEquals(5, add(3, 2));
     }
     function testSimple(){
      var d = new Date();      //month는 0부터 시작
      assertEquals(5,d.getMonth());
     }
     function testDate10DaysBeforeAdjustDate(){
      var expectedDate = new Date(2008,5-1,22); //5월 22일
      assertEquals(expectedDate.getDate(),adjustDate('1').getDate());
     }
     function testMonth10DaysBeforeAdjustDate(){
      var expectedDate = new Date(2008,5-1,22); //5월 22일
      assertEquals(expectedDate.getMonth(),adjustDate('1').getMonth());
     }
     function testDateOneMonthsBeforeAdjustDate(){
      var expectedDate = new Date(2008,5-1,1); //5월 1 일
      assertEquals(expectedDate.getDate(),adjustDate('2').getDate());
     }
     function testMonthOneMonthsBeforeAdjustDate(){
      var expectedDate = new Date(2008,5-1,1); //5월 1일
      assertEquals(expectedDate.getMonth(),adjustDate('2').getMonth());
     }
     function testDateOneYearsBeforeAdjustDate(){
      var expectedDate = new Date(2007,5-1,1); //2007년 5월 1 일
      assertEquals(expectedDate.getYear(),adjustDate('3').getYear());
     }
     function testDateOneYearsBeforeAdjustDate(){
      var expectedDate = new Date(2007,5-1,1); //2007년 5월 1 일
      assertEquals(expectedDate.getYear(),adjustDate('3').getYear());
     }
     function testDate10DaysBeforeAdjustDate2(){
      var expectedDate = new Date(2008,5-1,22); //5월 22일
      assertEquals(expectedDate.getDate(),adjustDate2('10d').getDate());
     }
     function testMonth10DaysBeforeAdjustDate2(){
      var expectedDate = new Date(2008,5-1,22); //5월 22일
      assertEquals(expectedDate.getMonth(),adjustDate2('10d').getMonth());
     }
     function testDateOneMonthsBeforeAdjustDate2(){
      var expectedDate = new Date(2008,5-1,1); //5월 1 일
      assertEquals(expectedDate.getDate(),adjustDate2('1m').getDate());
     }
     function testMonthOneMonthsBeforeAdjustDate2(){
      var expectedDate = new Date(2008,5-1,1); //5월 1일
      assertEquals(expectedDate.getMonth(),adjustDate2('1m').getMonth());
     }
     function testDateOneYearsBeforeAdjustDate2(){
      var expectedDate = new Date(2007,5-1,1); //2007년 5월 1 일
      assertEquals(expectedDate.getYear(),adjustDate2('1y').getYear());
     }
     function testDateOneYearsBeforeAdjustDate2(){
      var expectedDate = new Date(2007,5-1,1); //2007년 5월 1 일
      assertEquals(expectedDate.getYear(),adjustDate2('1y').getYear());
      assertEquals(expectedDate.getYear(),adjustDate2('1y').getYear());
     }
     function testDateOneYearsBefore365DaysBeforeAdjustDate3(){
      var expectedDate = new Date(2007,5-1,1); //2007년 5월 1 일
      assertEquals(expectedDate.getYear(),adjustDate2('1y').getYear());
      assertEquals(adjustDate2('366d').getDate(),adjustDate2('1y').getDate());
     }
     function testDateOneYearsBefore12MonthBeforeAdjustDate3(){
      var expectedDate = new Date(2007,5-1,1); //2007년 5월 1 일
      assertEquals(expectedDate.getYear(),adjustDate2('1y').getYear());
      assertEquals(adjustDate2('12m').getDate(),adjustDate2('1y').getDate());
     }
     function testDateOneYearsBefore11 MonthBeforeAdjustDate3(){
      var expectedDate = new Date(2007,5-1,1); //2007년 5월 1 일
      assertEquals(expectedDate.getYear(),adjustDate2('1y').getYear());
      assertEquals(adjustDate2('11m').getMonth(),adjustDate2('1y').getMonth());
     }
     function testPeriod2date(){
      assertEquals(10, period2date("10d"));
     }
     function testLastChar(){
      assertEquals("m",lastChar("3m"));
      assertEquals("y",lastChar("1y"));
      assertEquals("d",lastChar("30d"));
      assertEquals("m",lastChar("2m"));
      
     }
    </script>
</head>   
<body>
</body>
</html>

myJsScripts.js

function add(a, b) {
 return a + b;
}

function adjustDate(period){
 var today = new Date();
 var yesterday;
 var year = today.getYear();
 var month = today.getMonth(); // getMonth()는 index를 return(0,1)
 var date = today.getDate();

 if(period =='1'){
     yesterday = new Date(year, month, date-10);
 }
 if(period =='2'){
     yesterday = new Date(year, month-1, date);
 }
 if(period =='3'){
     yesterday = new Date(year-1, month, date);
 }
 return yesterday;
}

function adjustDate2(period){
 //period가 유효하지 않은 경우 디폴트로 30일 전
 //period 형태는 -10d, -1m, -1y
 if(!period || period.length<1){
  period = "-10d";
 }
 
 var today = new Date();
 var yesterday;
 var year = today.getYear();
 var month = today.getMonth(); // getMonth()는 index를 return(0,1)
 var date = today.getDate();
 var idx = -1;

  
 if( period.indexOf('d')>-1){
  var str = parseInt(period.substr(0,period.indexOf('d')));
     yesterday = new Date(year, month, date-str);
 }else if( period.indexOf('m')>-1){
  var str = parseInt(period.substr(0,period.indexOf('m')));
     yesterday = new Date(year, month-str, date);
 }else if( period.indexOf('y')>-1){
  var str = parseInt(period.substr(0,period.indexOf('y')));
     yesterday = new Date(year-str, month, date);
 }
 return yesterday;
}

function period2date(period){
 var str = parseInt(period.substr(0,period.indexOf('d')));
 return str;
}
function lastChar(str){
 if(str){
  return str.charAt(str.length-1);
 }else{
  return null;
 }
 return
}

정상적으로 수행된 경우


에러난 경우
에러난 부분 설명 (Show selected 나  Show all 클릭시)
Posted by 지니짱 | 2008/06/01 16:55 | 프로그래밍 | 트랙백
◀ 이전 페이지 다음 페이지 ▶



지니랜드
by 지니랜드
카테고리
전체
프로그래밍
자바
- 이클립스
- 기타언어 (ruby, php)
웹기술 HTML javascript
컴퓨터
- Unix/Linux
- spring
- 테스팅
툴 프로그램 설치
- 버전관리
영어
동영상
영화 책
일상
여행
아무거나
재테크
펀드
미분류
이글루링크
소스코드위를 걷다.....
life logging
거북거북 월드 (ㅡ.-..
아직 열지 않은 선물
All about IT Trends
까먹지말자!
이규영 연예영화 블로그
ok_code 블러그
최근 등록된 덧글
카테고리별로 해당되는 ..
by 지니랜드 at 05/22
이 책들을 다 보면... ..
by 랑우 at 04/14
오지천사님 좋은 정보 ..
by 지니랜드 at 03/16
잠깐지나가다가 들렀습니..
by 오지천사 at 03/09
이런 우연이 ㅎㅎㅎ, 저도..
by 지니랜드 at 03/01
저랑 2개나 같이 들으셨군..
by 상욱 at 03/01
아 그러셨구나.. 오늘 못..
by 지니랜드 at 02/28
ㅎㅎㅎ JCO 오시나 보군요..
by 윤걸 at 02/26
좋은지적 감사드립니다.
by 지니짱 at 09/24
멋진데요? 잘보겠습니다.
by coffeejava at 08/04
FISH RSS
최근 등록된 트랙백
2009 자바 개발자 컨퍼런..
by cutewebi 희정냥★
도서이벤트 4탄 (통계의..
by Korean Healthlog
『프리젠테이션 젠』출간..
by acornLoft
뉴욕의 프로그래머
by The note of Legendre
[책] 뉴욕의 프로그래머
by lovesera.com: ART o..
[행사] 매쉬업 컨퍼런..
by lovesera.com: ART o..
[행사] 매쉬업 엑스..
by lovesera.com: ART o..
루비(Ruby) 설치 및..
by Happy egoist
개발시에 참고하자.. /..
by mcsong's languid aft..
이글루 파인더
라이프로그
프리젠테이션 젠
프리젠테이션 젠

초난감 기업의 조건
초난감 기업의 조건

Stick 스틱!
Stick 스틱!

당신의 기업을 시작하라
당신의 기업을 시작하라

테스트 주도 개발
테스트 주도 개발

조엘 온 소프트웨어
조엘 온 소프트웨어

Head First Design Patterns (Paperback)
Head First Design Patterns (Paperback)

실용예제로 배우는 웹 표준
실용예제로 배우는 웹 표준

아랑은 왜
아랑은 왜

천년전의 글로벌 CEO, 해상왕 장보고
천년전의 글로벌 CEO, 해상왕 장보고

마케팅 천재가 된 맥스
마케팅 천재가 된 맥스

태그
커맨드패턴 영진출판사 크롬OS hangulime 아이폰 chromeos dodreams 하나은행 디자인패턴 감귤 underscore 트위터이벤트 트위터 로드맵 이벤트 에도가와란포 자바 웨이브알리미 크롬확장기능 commandpattern 하나nbank 아이팟 제주도 space google 모바일뱅킹 파일다운로드 IETab 추리소설 할인
rss

skin by 에셈