2008년 9월 7일 일요일

단위 테스트 JUnit 사용하기.[스크랩]

단위 테스트 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 실행결과 - 모두 올바른 결과를 낼때
틀린 결과를 내면 붉은 색이 나온다. 맞는 값과 틀린 값을 입력해서 잘 작성된 메서드인가를 확인한다.

댓글 없음:

댓글 쓰기