[Java] J Unit 이란?

Java 2014. 9. 11. 20:30

JUNIT

자바 프로그래밍시 Unit테스트를 쉽게 해주는 프레임 워크, 테스트 툴입니다.

 

여기서 유닛테스트(Unit Test)란 프로그래밍중 소스 코드의 특정 모듈이 의도대로 정확히 작동되는지 검증하는 절차라고 하는데 , 쉽게 말해서 한번에 컴파일해서 확인하려면 오래걸리니까( 간단한 프로그래밍이 아닌 복잡하고 몇만줄 이상의 코드일시) 각 부분만 확인이 가능한 테스트입니다.

또한 구현의 완성이 안되있더라도 내가 확인하고 싶은 기능의 완성된 모습을 직접 확인 할 때도 사용할 수 있습니다. 이렇게 각 테스트 케이스(테스트를 하려는 대상)가 서로 분리되야 하기 때문에, 확인을 위한 가짜 객체를 생성하기도 합니다.  

 

특정 모듈을 테스트하는 이유는 전체적인 환경에서 해당 로직의 문제를 테스트하는것 보다 해당 로직의 문제를 직접 테스트하는 것이 더욱 직관적이고 확실하기 때문입니다. 만약 대형프로젝트 같은 경우를 생각해보자면, 예상 실행 속도보다 느리게 나올 경우가 있을 것입니다. 그럴경우 전체적으로 소스를 보고 어떤 로직 떄문에 예상 속도가 안나오는지 확인 하기가 어렵습니다. (가능하다면 .. 할말 없네요 ㅋㅋ) 그렇기에 전체적이 아닌 특정 모듈의 각 로직을 하나씩 보면서 확인 할 수 있는 유닛테스트를 하는 것입니다.

 

예를 들어볼까요?

첫번쨰로, 제가 만든 각종 연산하는 프로그램이 있습니다. 문제는 이상은 없는것 같은데 결과가 이상합니다.  그래서 테스트를 시작합니다. (거기엔 각종 비트연산자, 산술연산자, 증감연산자 등등 많다는 가정하예요!!)  

덧셈부분이 잘못 됬다고 치고, 일단 차례대로 메소드들은 테스트 할 것입니다. 그런데 잘못된 덧셈을 하기 전 각각의 메소드 들을 모두 테스트 해야하고 잘못된 선택으로 취소가 됬다면 설상가상 다시 처음부터 테스트를 해야합니다. 

두번째, 디비와 연동된 클래스입니다. 임시적으로 테스트를 위해 DB 접속을 위한 암호를 넣고 실수로 그 사실을 잊어버려 테스트 후 남겨뒀다고 하면, 이 정보는 심각한 보안상 문제를 일으킬수 있습니다.

그렇기 때문에!! 유닛테스트를 합니다  

 

그런데 자꾸, 테스트 한다는데 도대체 어떻게 테스트를 하는걸까요?

다시 말해서 어떻게 우리가 원하는 대로 동작 하는지 어떻게 알 수 있을까요? 

 

답은 기대값과 결과값의 비교입니다.

쉽죠? 기대값과 결과값의 비교.. 당연한 말이죠.

우리가 A를 생각했는데 해당 답변이 A로 나왔다면 정말 좋은것일테고 B로 나왔다면 무엇인가 잘못 된거겠죠. 만약 a로 나왔다면 그런데로 비슷하게 나왔다고 할 수 있겠죠?

이렇게 기대값과 결과값을 비교함으로써 프로그래머 또는 프로그램을 요구한 회사, 사용자는 이 결과를 보고 수정할 수도 그대로 진행 할 수도 있게됩니다.

 

-Methods 정리-

 

/*

assertEquals(A, B)

 A와 B가 일치하는지를 조사

 A  , B 에는 Object, int, float, long, char,boolean 등의 모든 자 료형이 들어갈 수 있다. 단 A, B의 타입은 언제나 같아야만 한다. 

/*

assertTrue(X)

 X가 참인지를 조사한다. 

 X는 boolean형태의 값이어야 한다.

/*

assertFalse(X)

 X가 거짓인지를 조사한다. assertTrue와 정 반대의 메소드

 X는 boolean형태의 값이어야 한다

/*

 

 

assertNotNull(Object X)

 X가 Null이 아닌지를 조사한다.

 만약 Null이라면 assertionFailedError가 발생한다.

/*

 assertNull(Object X)

 X가 Null인지를 조사한다. 

 만약 Null이 아니라면 assertionFailedError가 발생한다.

/*

assertSame (Object A, Object B)

 A와 B가 같은 객체인지를 조사한다.

 

 

이제 다시 JUNIT으로 돌아가서..

JUNIT을 하는 이유를 앞서 설명한 내용을 토대로 정리해서 말하자면~

학교에서하는 System.out.println("Hello World"); 이런 간단한 프로젝트가 아닌 장기적인, 거대한 프로젝트라면 개발 진행 중 프로그램에 대한 테스트가 필요합니다. 그럴때 보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화 시켜 단위 테스트를 용이하게 해주는데 그게 바로 JUNIT입니다.

 

한줄정리 !!

JUNIT 은 자바 프로그래밍시 UNIT테스트를 쉽게 해주는 프레임워크 입니다.

 

출처 : http://blog.naver.com/ellay06/120169650178

'Java' 카테고리의 다른 글

[Java] JUnit 사용하기  (0) 2014.09.12
[Java] Virtual 함수( 가상함수)  (0) 2014.09.04
[Thread Pool] ThreadPoolExecutor  (0) 2012.09.06
Bing Translator API를 이용한 번역 - JAVA  (0) 2012.07.21
Java ::: cmd 명령어 실행법  (0) 2012.06.28
블로그 이미지

kuku_dass

,