[Spring boot] Junit
1. Junit
테스팅 프레임워크입니다.
외부 의존 없이 오로지 자바 코드만으로 테스트 가능하게 합니다.
2. Junit 사용이유
데이터베이스 연동, Controller, Service, Dao를 전부 구성하고 main() 함수에서 테스트를 시도 할 경우
에러가 발생했을 때 이 에러가 어디서 난 에러인지 확인을 하기가 어렵습니다.
하나하나 디버깅을 통해 확인을 하게 된다면 많은 시간을 소요하게 됩니다.
불필요한 낭비를 줄이고 에러가 어디에서 발생하는지 간단하게 확인 하기 위해서 사용하는 것이 'Junit' 입니다.
또한, 이러한 단위테스트를 이용할 경우 Spring 프레임워크를 이용할 때는
Spring이 실행되기까지 기다리지 않아도 되기 때문에 생산성이 올라간다는 장점 또한 가집니다.
* 단위테스트(xUnit) : 테스트하고자 하는 애플리케이션 안에 있는 가장 작은 단위로 예상대로 작동하는지 확인하는 기법을 말합니다.
말이 너무 어려운데 쉽게 말해서 그냥 메소드 단위로 테스트한다고 생각하면 됩니다!
메소드 단위로 테스트 한다는 것은 내가 만든 여러 기능들 중 기능 하나만을 테스트 하겠다는 뜻입니다!
3. Junit 사용
1) dependency 추가
먼저 해당 프로젝트 pom.xml 파일을 열고 Junit dependency를 추가합니다.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
2) 라이브러리 추가
그 다음 프로젝트 우클릭 후 [Properties]를 선택하고 검색창에 'Java Build Path'를 검색합니다.
상단 메뉴중 'Libraries'를 선택 후 우측 메뉴의 [Add Library...] 버튼을 클릭합니다.
[Add Library...]를 누르면 아래와 같은 화면이 나오게 됩니다.
목록 중 'Junit'을 선택하고 [Next>] 버튼을 누릅니다.
3) Junit Test Case
테스트하고자 하는 class 파일을 우클릭 후 'Junit Test Case'를 생성합니다.
아래와 같은 화면을 확인 할 수 있는데 여기서는 딱히 건드릴 것 없이 그냥 [Next>]를 누르고 넘어가도 됩니다.
위의 화면에서 [Next>]를 누르면 해당 class 파일의 메소드가 체크박스와 함께 나타나는 것을 확인 할 수 있습니다.
저는 Model에 해당하는 'Person'이라는 class 파일을 선택해서 getter/setter 메소드만 나온것을 알 수 있습니다.
메소드 전부 선택하면 해당 메소드 전부를 테스트 하겠다는 의미입니다.
[Finish]를 누르고 나면 main이 아닌 test 경로로 들어가면 test 파일이 만들어진걸 확인할 수 있습니다.
해당 test 파일에서 테스트 코드를 작성하고 테스트 하면 됩니다.
추가로!
본인은 처음 Junit을 사용했을 때 test를 어떻게 실행하는지 몰라서 헤맸었는데ㅋㅋㅋ!
혹시 모르는 사람을 위해 적어보자면 두가지 방법이 있습니다!
클래스 전체를 테스트 하고자 할 때는 test 파일을 우클릭 한 후 [Run As] -> [Junit Test]를 선택하면 해당 클래스 파일의 코드 전부가 실행되게 됩니다.
메소드만 테스트 하겠다 할 때는(단위테스트) 해당 메소드 위에 마우스 커서를 올리고 우클릭 후 위와 동일하게 [Run As] -> [Junit Test]를 누르면 됩니다.
Test 코드를 작성하는 방법은 본인도 아직 미숙하지만(ㅎㅎ)
Junit의 프레임워크 중 하나인 Mockito와 같이 나중에 포스팅 하겠습니다.