posted by 희정냥★ 2007. 4. 2. 14:33

단위 테스트 JUnit 사용하기.

목포  bada9님의 질문중 JUnit을 이용한 단위 테스트입니다. 디버그를 할 때 자바는 단위테스트를 많이 사용합니다. 자바 디버깅 툴 jbd 사용법과 System.out.println, JLogger, Log4j를 이용한 로깅방법은 빠른 시일안에 추가하겠습니다.
 
1. JUnit 환경 확인하기 - 이클립스에 통합되어 있다.


2. 프로젝트 만들기


3. 클래스 만들기
[Student.java]-------------------------
package kr.honny.unit;

public class Student {
 private String name;
 private int age;
 private String addr;
        
 public Student(String name, int age,String addr) {
           this.name=name;
           this.age=age;
           this.addr=addr;
 }//Student
 public String getAddr() {return addr;}
 public int getAge() {return age;}
 public String getName() {return name;}
 public void setAddr(String string) {addr = string;}
 public void setAge(int i) {age = i;}
 public void setName(String string) {name = string;}
 public String toString(){
           return name+"   "+age+"    "+addr;
 }//toString
 public boolean equals(Object obj){
           boolean isE=false;
           Student temp=(Student)obj;
           if(temp.getName().equals(name) && temp.getAge()==age
            && temp.getAddr().equals(addr)){
                     isE=true;
           }
           return isE;
 }//equals
 
 public int hashCode(){
           int temp=0;
           temp=name.hashCode()+addr.hashCode()+age+37;
           return temp;
 }//hashCode
}

[StudentMain.java]-------------------------

package kr.honny.unit;      

public class StudentMain {

 public static void main(String[] args) {
        Student s1=new Student("a",34,"b");
        Student s2=new Student("a",34,"b");
        System.out.println("--------Test----------");
        System.out.println(s1.hashCode());//해쉬코드
        System.out.println(s2.hashCode());//해쉬코드
        System.out.println(s2.equals(s1));
        System.out.println(s1.getName().equals("a"));
        System.out.println(s1.getAddr().equals("b"));
        System.out.println(s1.getAge()==34);
 }
}

 

4. JUnit Test Case 만들기



5. JUnit Test Case 설정


6. JUnit Test Case 코딩
[HelloJunits.java]-------------------------
 
package kr.honny.unit;
import junit.framework.TestCase;
public class HelloJunits extends TestCase {   //1. 반드시  TestCase를 상속한다.
       Student s1;
       Student s2;
       Student s3;
     
 public static void main(String[] args) {
      junit.swingui.TestRunner.run(HelloJunits.class); //2. 실행은 ..run(클래스이름.class)
     //junit.swingui.TestRunner.run(클래스이름.class)  이형식을 지킬 것.
 }
 public void setUp() {   //초기화
       s1=new Student("a",34,"b");
       s2=new Student("a",34,"b");
       s3=new Student("a",34,"c");
 }
 public void testHash() {  // 3. 테스트할 메서드는 testXXX 형태로 선언한다.
      assertTrue(s1.hashCode() == s2.hashCode());
      //4. assertTrue는 ==나 equals를 직접 비교한다.
 }
 public void testSameStudent() {
  //System.out.println(s2.equals(s1));
      assertEquals(s1,s2);  //정상   5. s1.equals(s2)를 비교한다.
      assertEquals(s1,s3);  //에러 발생
      assertEquals("참조타입 비교",s1,s2);
  //assertTrue(s2.equals(s1));
 }
}

7. JUnit Test Case 코딩

StudentMain.java과 같은 역할을 단위 테스터로 실행한다.

StudentMain.java는 System.out.println을 사용하여 한 줄 한 줄 테스트를한다.

그러나 HelloJunits.java는 JUnit 프레임워크를 이용하여 메서드 단위로 테스트를 한다.

assertEquals, assertTrue를 이용하여 참 거짓을 예상하고 잘 작성된 메서드 인가 아닌가를 판별할 수 있다.



8. JUnit Test Case 실행결과 - 모두 올바른 결과를 낼때
틀린 결과를 내면 붉은 색이 나온다. 맞는 값과 틀린 값을 입력해서 잘 작성된 메서드인가를 확인한다.

출처 : Tong - rainboowkr님의 Eclipse통

'Computer > Programming' 카테고리의 다른 글

조엘 테스트  (1) 2007.11.24
구글의 마스터 플랜  (0) 2007.04.07
단위 테스트 JUnit 사용하기  (0) 2007.04.02
컴퓨터로도 풀 수 없는 암호 만들기  (2) 2007.03.25
프로그래머 타입별 분류  (3) 2006.10.03
학술제 때 플밍대회 1등한 희정냥★  (2) 2006.10.02

댓글을 달아 주세요