티스토리 뷰

반응형

 jUnit이란? 출처 : http://jamesku.tistory.com/entry/ITJUnit%EC%9D%B4%EB%9E%80

독립된 단위 테스트를 도와주는 framework이다.


기대값과 결과값을 비교한다.


컴퓨터 프로그래밍에서 유닛 테스트란 소스 코드의 특정 모듈이 

의도된 대로 정확히 작동하는지 검증하는 절차다. 

즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다. 

이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 

단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다. 

이상적으로, 각 테스트 케이스는 서로 분리되어야 한다. 

이를 위해 가짜 객체(Mock object)를 생성하는 것도 좋은 방법이다. 

유닛 테스트는 (일반적인 테스트와 달리) 개발자(developer) 뿐만 아니라 

보다 더 심도있는 테스트를 위해 테스터(tester)에 의해 수행되기도 한다.




jUnit 테스트 하기

출처 : http://using.tistory.com/entry/JUnit-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%95%98%EA%B8%B0


값을 비교하는 방법이 많이 있다 해당 내용은 위에 링크를 참조하면 편하다.

아래 코드는

DB에 insert 후에 그 값이 맞는지 확인하는 테스트 이다.

이걸 응용하면 좀더 많은 테스트를 할 수 있을 거라고 생각한다.

설정방법.

전자정부프레임워크 (Maven 구조) 일때,



 

src/main/java

src/main/resources

 

쪽에 맞춰서

src/test/java <- 해당 패키지 명대로  Test 할 컨트롤러를 생성한다.

src/main/resources <-- 스프링 설정 부분을 그대로 같이 넣어준다.






db 커넥션이 필요하면 위 그림과 같이 ojdbc14.jar 를 프로젝트 lib 폴더 안에 넣어줘야 한다.

아래는 단위 테스트 한 소스 코드 이다.

Spring 설정을 그대로 가져와서 사용할려면 아래 어노테이션을 추가한다.

@ContextConfiguration(locations={"classpath*:/egovframework/spring/com/context-*.xml"})

log4j 처럼 로그를 보고 싶으면 추가한다.

@RunWith(SpringJUnit4ClassRunner.class)

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package mngwserc.com.admin.web;
 
import static org.junit.Assert.*;
 
import javax.annotation.Resource;
 
import mngwserc.com.admin.service.ComAmUserVO;
import mngwserc.com.admin.service.impl.ComAmUserManageDAO;
 
import org.junit.*;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath*:/egovframework/spring/com/context-*.xml"})
public class ComAmUserManageControllerTest {
    
    @Resource(name="ComAmUserManageDAO")
    private ComAmUserManageDAO dao;
 
    @Test
    public void testInsert() throws Exception{
        
        ComAmUserVO vo = new ComAmUserVO();
        
        vo.setLOGIN_ID("test");
        vo.setEMAIL("test@test.com");
        vo.setNAME("아무개");
        vo.setREGDATE("2014/04/08");
        vo.setDEPARTMENT("부서1");
        vo.setPHONE("010-0000-0000");
        vo.setUSER_TYPE("OUT_USER");
        vo.setUSER_ID(99999);
        vo.setSTATUS("Y");
        
        try{
            dao.insert(vo);
            
            ComAmUserVO result = (ComAmUserVO) dao.get(vo);
            assertEquals("저장한 내용 비교 TEST",vo.getNAME(), result.getNAME());
            //assertTrue("이름 비교 테스트 " ,vo.getNAME() == "----");
            dao.delete(result);            
            
            // 배열 비교 시작
            String [] test1 = {"홍길동","아무개"};
            //String [] test2 = {"홍길동","홍철이"};            
            String [] test2 = {"홍길동","아무개"};
            
            assertArrayEquals("배열 비교 시작", test1,test2);
            // 배열 비교 끝
            
            
            // 널 체크
            assertNotNull("전화번호 유무", vo.getPHONE());
 
            
            System.out.println("종료~!!!!!!!!!");            
        }catch(Exception e){
            e.printStackTrace();
        }
        
    }
 
    
}
 

 

배열 비교하는 부분하고 기타 널체크 하는 부분까지 넣었다.

 

단위 테스트 하는법.





 

jUnit TEST를 실행.




 

정상적으로 종료되었을때 위와 같이 나타난다.

 




실패했을땐 위와 같이 x표시와 함께 붉은 색으로 표시된다.

 

아직 미숙하지만 앞으로 많이 어려운 로직이라던지 그런걸 처리할 때

단위테스트를 사용하는것도 괜찮은 방법일 것 같다.

 

반응형

'Study > JUnit' 카테고리의 다른 글

단위테스트 작성 방법 분석, TDD 관련 정리  (0) 2016.08.22