나의 성장과정  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
Junit 삼매경 - 1
Junit 이 리플렉션 덩어리라는 것이 느껴진다. (매력쟁이 리플렉션!)

5.0에 추가된 @annotation이 Junit4 에 적용이 됐다. @annotation을 잘몰라서 조금 헷갈린다.

책은 3.8 기준이라서 장단을 맞추기가 쉽지 않다.
책은 실용주의 프로그래머를 위한 단위테스트.
책은 군더더기가 적었다 (가끔 너무 하다 싶을 정도로 ㅋㅋ)

Junit 3.8  과 4 모두 하려니, 더욱 헷갈려서 지인의 충고대로 천천히 걸어가려고 한다.
(ide에 Junit4를 add 하고 우선은 3.8기준으로 공부한다)

* 절대 경로 3.8 과 4 를 섞어서 쓰지 말것  테스트 수행결과가 달라진다.
ex) TestCase를 상속받고, @annotation같이 써보삼. -_-;; 어떤 코드가 들어가느냐에 따라
예측 블가능 exception발생에, 원하지 않는 테스트 까지 수행한다.
ex) @Test를 사용하고, suite()를 선언하면, @Test우선순위로 실행된다.(suite의 의미가 없어진다)
절대로 섞어서 쓰지 말것.

1.
a) IntelliJ에서 Junit 을 추가 하는 방법
  - file - setting - project structure - project libraries에 junit4.0.jar를 추가 한다.
     * Junit.jar는 3.8 버전, junit4.0.jar는 4.0 버전

b) Eclipse에서 Junit 을 Libraries에 추가 하는 방법.
 - 해당 프로젝트 - properties - Java Build Path - Libraries 탭 - Add Library  를 이용한다.
     * add library까지 진행하다보면 버전을 선택하는 화면이 나온다.

2. Test Class가 가져야하는 Junit의 약속(룰)
     - public method
     - void
     - no parameter
     - method명은 test로 시작
     - extends TestCase

ex ) 
import junit.framework.*;
public class CaseTester extends TestCase {
public CaseTester(String method) { super(method);  } //-> suite()를 사용시 쓰인다.
public void testAdd() {  .....  }
}  

3. Junit의 helper method(== assert method)
a) assertEquals([String message],expected, actual) // message는 생략 가능으로  실패시 메세지가 출력된다.
assertEquals([String message],expected, actual,tolerance) //실수형 비교를 위해서 오차의 범위를 지정해준다.
b) assertNull([String message],Object)
    assertNotNull([String message],Object)
c) assertSame([String message],expected, actual) // 같은 객체를 참조하는지 판정
   assertNotSame([],expected,actual) // 그 반대
d) asserTrue([String message], boolean) 
assertTrue(true); 이딴 코드 넣으면 -_- 안됨. "너 왜 거기 있니~"
e)fail 무조건 실패처리


4.  suite()  활용
 - 테스트 메소드가 많은 경우, 원하는 테스트 메소드만 지정해서 테스트를 수행한다. 
 - suite()가 오버라이딩 되면,  suite()만 실행한다.

[rule]
  - static method
  - Test로 리턴

  1)  TestSuite suite = new TestSuite();
       suite.addTest(new 테스트클래스("실행할테스트메소드"));
       suite.addTest(테스트클래스.suite()); // static 이니까~ 회사에서 통합 테스트 실행시 유용할 듯.
  2)  TestSuite suite = new TestSuite();
       // 모든 테스트를 suite에 추가 하시겠삼. ( 테스트클래스의 suite()는 무시~)
       suite.addTestSuite(테스트클래스.class);

5. 각 testMethod 전후로 실행된다.
protected void setUp()   // 테스트 메소드 실행전
protected void tearDown()  //테스트 메소드 실행후

테스트 메소드 개수 만큼 실행된다.
protected 로 선언된 이유는, 굳이 그 클래스만의 고유한 기능을 다른 곳에서 쓸필요는 없기 때문이
아닌가 생각한다.

6. 각 suite() 전후로 실행된다. 만약 위의 setUp()과 tearDwon()이 오버라이드 되어 있으면,
같이 실행된다.

public static junit.framework.Test suite()
    {
        TestSuite suite = new TestSuite();
        //suite.addTest(new TestClassOne("test"));
        suite.addTest(new TestClassOne("testAdd"));
        suite.addTest(new TestClassOne("testSub"));
        //suite.addTest();

        TestSetup wrapper = new TestSetup(suite) {

            protected void setUp() throws Exception {
                System.out.println("suite SetUP");
            }

            protected void tearDown() throws Exception {
                System.out.println("suite tearDown");
            }
        };

        return wrapper;
    }

7. 사용자 정의 assert Method
 - 나왔다 -_-;; 어딜가나 사용자 정의 들이 있다.

public class  Tester extends TestCase {
    public void assertEvenDollars(String msg, Object) {  ....  }

}

  public class TestSomeThing extends Tester { ...   }






BLOG main image
Simple is beatiful!
 Notice
 Category
분류 전체보기 (755)
전직 (0)
일상 (7)
진행중 (6)
3Fs (14)
미정 (3)
Serendipitous! (6)
지르자 : 맥북 (5)
(5)
FaceBook (3)
 TAGS
Java JavaScript DOM primitive color Eclipse 자바스크립트 Debug 커피 URL URLConnection 네트워크 접근지정자 CP1215 JS Safari HP 사파리 laserjet tomcat
 Calendar
«   2025/07   »
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
 Recent Entries
 Recent Comments
 Archive
 Link Site
상상할 수 있는 힘이 ..
즐겁게살자
인생의 소중한 꿈
{fly to the ocean.com}
누노의 컴퓨토피아
한RSS
[지인]I can\'t stop. Love. Lo…
[원츄]OK 괜찮아 다 잘 될거야
[원츄]애자일 이야기
[원츄]IBM Developerworks
 Visitor Statistics
Total :
Today :
Yesterday :
rss