본문 바로가기
TIL (Today I Learned)

Unit Test [단위 테스트]

by 프리랜서가 들려주는 IT세계 2019. 8. 30.
반응형

프로젝트를 하면 꼭 거쳐하는 과정인 단위테스트("단테"라고도함)를 한다. 또는 유닛테스트라고 한다.

 

Unit Test 란?

유닛 테스트(unit test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 작동하는지 검증하는 절차이다. 즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다. 이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다. 이상적으로, 각 테스트 케이스는 서로 분리되어야 한다. 이를 위해 가짜 객체(Mock Object)를 생성하는 것도 좋은 방법이다.

 

Unit test의 장점

1. 문제점 발견

  • 유닛테스트의 목적은 프로그램의 각 부분을 고립시켜서 각각의 부분이 정확하게 동작하는지 확인하는 것이다. 즉, 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 이를 통해 문제 발생 시 정확하게 어느 부분이 잘못되었는지를 재빨리 확인할 수 있게 해준다. 따라서 프로그램의 안정성이 높아진다. 유닛 테스트는 일견 개발 시간을 증가 시키는 것처럼 보이지만 개발 기간 중 대부분을 차지하는 디버깅 시간을 단축시킴으로써 여유로운 프로그래밍을 가능케 해준다

2. 변경이 쉽다

  • 프로그래머는 언제라도 유닛 테스트를 믿고 리팩토링을 할 수 있다. 리팩토링 후에도 해당 모듈이 의도대로 작동하고 있음을 유닛 테스트를 통해 확신할 수 있다. 이를 회귀 테스트(Regresion testing)라 한다. 코드를 고치더라도 문제점을 금방 파악할 수 있고 수정된 코드가 정확하게 동작하는지 쉽게 알 수 있게 되므로 프로그래머들은 더욱 더 의욕적으로 코드를 변경할 수 있게 된다. 좋은 유닛 테스트 디자인은 그 유닛이 사용되는 모든 경로를 커버할 수 있는 테스트 케이스를 만들어 준다.

3. 통합이 간단하다

  • 유닛 테스트는 유닛 자체의 불확실성을 제거해주므로 상향식(bottom-up) 테스트 방식에서 유용하다. 먼저 프로그램의 각 부분을 검증하고 그 부분들은 합쳐서 다시 검증하는 통합 테스트에서 더욱 빛을 발한다

어떻게 테스트를 진행해야 되나?

1. 구조

구조

위와 같은 test 폴더 안, java 폴더에 test할 테스트케이스를 담아주면 된다.

 

2. 테스트 케이스 작성

@Test 어노테이션을 사용해서 테스트할 메소드를 적으면 된다.

arguments을 담는다면, 가라 데이터로 테스트를 할 수 있도록 세팅해주면 된다.

 

마지막으로 Assert.class를 이용해서 JUnit을 이용해서 테스트를 하면 된다.

 

3. JUnit 이란?

JUnit은 자바용 단위 테스트 작성을 위한 산업 표준 프레임워크이다.

JUnit을 사용하려면 Pom.xml 에 Dependency를 추가해서 사용하면된다.

또한 사용하는 프레임워크에 따라 설정값이 조금씩은 달라진다.

예를 들어, Spring boot 같은 경우, 클래스 위에 @RunWith, @SpringBootTest 를 적어주면 된다. (상황에 따라 달라질 수 도 있다^^)

@RunWith(SpringRunner.class)
@SpringBootTest(환경값)
public class test {
~~~
}

 

비록 처음써보는 JUnit인데 테스트해보면서, 앞으로 더 추가할 내용이 있다면 추가적으로 글로 정리해서 올리겠습니다~

반응형

'TIL (Today I Learned)' 카테고리의 다른 글

Github #1 Contribution 기록 안될 때  (0) 2020.01.24
Swift #1  (0) 2019.12.28
[기초] Singleton Pattern  (0) 2019.08.30
[Oracle SQL] ROW_NUMBER( ) 사용하기  (0) 2019.08.29
Inbound, Outbound Traffic  (0) 2019.07.08

댓글