JUnit 이란?
자바 프로그래밍 언어용 단위 테스트 도구로 보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위 테스트를 쉽게 해주는 테스트용 Framework입니다. 플러그인 형태로 Eclipse에 포함되어있으며, 하나의 jar 파일이 전부이기 때문에 사용법도 간단합니다. JUnit은 외부 테스트 프로그램(케이스)을 작성하여 번거롭게 디버깅하지 않아도 되며, 프로그램 테스트 시 걸릴 시간도 관리할 수 있는 기능을 가지고 있습니다. 테스트 결과를 확인하는 것 이외 최적화된 코드를 유추해내는 기능도 제공합니다. 또한, 테스트 결과를 단순한 텍스트로 남기는 것이 아니라 Test클래스로 남깁니다. 그래서 개발자에게 테스트 방법 및 클래스의 History를 넘겨줄 수도 있습니다.
JUnit의 특징
- @Test 메서드가 호출할 때마다 새로운 인스턴스가 생성되어 독립적인 테스트 가능
- 단위 테스트 Framework 중 하나
- 문자 혹은 GUI 기반으로 실행됨
- 단정 문으로 테스트 케이스의 수행 결과를 판별함(assertEquals(예상 값, 실제 값))
- JUnit4부터는 어노테이션으로 간결하게 테스트를 지원함
- 결과는 성공(녹색), 실패(붉은색) 중 하나로 표시
- 테스트 결과를 확인하는 것 이외 최적화된 코드를 유추해내는 기능도 제공
Eclipse에서 JUnit 설정 방법
1. 프로젝트에서 마우스 우클릭 후 Build Path - Configure Build Path 클릭
2. Libraries - Add Libraries - JUnit - Next
3. 현재 최신 버전은 JUnit 5입니다. 버전 설정 후 Finish
4. 그럼 이렇게 JUnit 5 라이브러리가 추가된 것을 확인할 수 있습니다.
JUnit 사용방법
그럼 추가된 JUnit을 이제 어떻게 사용하는지 알아봅시다!
먼저, 패키지 안에 Calculator 클래스를 생성해 줍니다.
간단하게 calc로 만들었습니다.
그리고 num1과 num2를 + - * / 사칙연산하는 메서드를 각각 만들어주고!
이제부터 라이브러리를 사용하여 테스트 코드를 만들어 보겠습니당
프로젝트에서 New - Other 을 클릭해주세요
그리고 JUnit을 검색 하면 JUnit Test Case 라고 뜨는데 이걸 클릭하고 Next
보통 여기서 Name은 테스트할 클래스명+Test로 많이 설정 하는편 입니다.
Name 설정 후 Class under test에서 Browse 클릭합니다.
그럼 이렇게 아무것도 없는 빈 무언가가 나오는데 저기에 해당 클래스가 있는 패키지명을 직접 입력해주고 테스트할 클래스를 클릭하고 Ok 눌러줍니다.
그리고 이렇게 테스트할 메서드를 클릭해주고 Finish 해줍니다.
그럼 이렇게 CalcTest.java 파일이 생성되는데, 여기에 간단한 테스트 코드를 작성해보겠습니다.
코드를 이렇게 작성해주고 Run As - JUnit Test 를 클릭해줍니다.
이렇게 초록색으로 뜬다면 오류가 없는 정상적인 메서드라는 것입니다.
오류가 난다면 어떻게 표시될까요?
일부러 오류를 내기위해서 testDiv에서 틀린 값을 넣었습니다.
그러니 빨간줄과 함께 JUnit에 Failures:1이 뜨면서 어디서 오류가 났는지 매우 친절하게 표시해줍니다.
JUnit의 assert 메소드
assertEquals(A, B) | 객체 A(기대값)와 B(테스트값)가 같은 값을 가지는지 확인한다. |
assertEquals(A, B, C) | 객체 A와 B가 같은 값을 가지는지 확인한다. C는 오차범위. |
assertArrayEquals(A, B) | 배열 A와 B가 일치하는지 확인한다. |
assertSame(A, B) | 객체 A와 B가 같은 객체인지 확인한다. |
assertTrue(A) | 조건 A가 참인지 확인한다. |
assertNull(A) | 객체 A가 null인지 확인한다. |
assertNotNull(A) | 객체 A가 null이 아닌지 확인한다. |
오늘은 이렇게 JUnit에 대해서 알아보았습니다!
'[IT 지식] > 개발 도구 & 개발 환경' 카테고리의 다른 글
인텔리제이로 스프링부트 프로젝트 생성하기 (0) | 2023.03.20 |
---|---|
[Git] 좋은 커밋 메세지 작성법 (0) | 2022.10.28 |
[Git] README.md(Markdown) 작성법 (0) | 2022.09.06 |
[Eclipse] 과정평가형 정보처리산업기사 - 이클립스 기본 세팅 (0) | 2022.08.17 |