JUnit 관련 어노테이션
단위 테스트(Unit Test)
단위테스트란 특정 소스코드의 모듈이 의도한 대로 잘 작동하는지 검증하는 테스트이다. 즉, 함수 및 메소드에 대한 테스트를 하는 작업으로써, Spring에서 단위테스트는 Spring Container에 올라와 있는 Bean을 테스트 하는 것이다. 테스트 대상 단위가 엄격하게 정해져있지는 않지만, 일반적으로 클래스 또는 메소드 수준으로 정해진다. 단위의 크기가 작을수록 단위의 복잡성이 낮아지고, 실행하려는 기능을 표현하기 더 쉬워진다.
단위 테스트 장점
단위 테스트는 해당 부분만 독립적으로 테스트하기 때문에 어떤 코드를 리팩토링하여도 빠르게 문제 여부를 파악할 수 있다. 또한, 개발자는 작성한 테스트 코드를 수시로 빠르게 돌리면서 문제점을 파악할 수 있다. 단위 테스트를 진행하는 동안에는 실제 어플리케이션을 동작시킬 때와 마찬가지로 Bean을 테스트 할 수 있다.
JUnit
자바 개발자가 가장 많이 사용하는 테스팅 기반 프레임워크이다. 기본 Junit 4에 비해 JUnit 5는 3가지 모듈로 구성된다. JUnit5는 테스트 작성자를 위한 API 모듈과 테스트 실행을 위한 API가 분리되어 있다. 자바 8 이상을 필요로 한다.
JUnit 4 구조
JUnit으로 작성된 단위 테스트 코드 구조
JUnit 관련 어노테이션
Annotation | 지정 대상 | 설명 |
@After | 메서드 | @Before에서 설정한 테스트 픽스쳐를 제거하기 위해 사용됩니다 |
@AfterClass | 메서드 | @BeforeClass 에서 설정한 테스트 픽스쳐를 제거하기 위해 사용됩니다 |
@Before | 메서드 | 테스트 픽스쳐를 만들기 위해 사용됩니다 |
@BeforeClass | 메서드 | 생성에 맋은 시간이 소요되는 픽스쳐를 설치하는 용도로 사용됩니다 |
@Ignore | 메서드 | 해당 테스트 케이스를 실행하지 않도록 합니다 |
@RunWith | 테스트 할 클래스 | 테스트 케이스를 실행할 테스트 러너를 지정할 수 있습니다 |
@Suite | 테스트 할 클래스 | 단위 테스트 케이스들을 묶어서 같이 실행하고 싶을 때 사용합니다 |
@Test | 메서드 | 테스트 케이스로 지정합니다 |
JUnit 테스트 메소드
메서드 | 설명 |
assertEquals(expected,actual) | 두 객체의 equals 결과가 참인지 검사한다 |
assertTrue(actual) | 계산결과가 참인지 검사한다 |
assertFalse(actual) | 계산결과가 거짓인지 검사한다 |
assertNotNull(actual) | 계산결과가 null이 아닌지 검사한다 |
assertNull(actual) | 계산결과가 null인지 검사한다 |
assertSame(expected,actual) | 두 객체가 동일 객체인지 검사한다 |
assertNotSame(expected,actual) | 두 객체가 동일 객체가 아닌지 검사한다 |
fail("Test Fail") | 테스트 케이스를 실패시킨다 |
assertArrayEquals(expected,actual) | 두 개의 배열의 equals 값이 참인지 검사한다 |
JUnit 4 실행 예시
1. 상단 메뉴에서 "File" -> "New" -> "Other..." 선택
2. 나타나는 대화상자에서 "JUnit"을 검색하거나 "Java" 카테고리 아래의 "JUnit" 선택
3. "Select a wizard" 대화상자에서 "JUnit Test Case"를 선택하고 "Next"를 클릭
4. JUnit 4 선택 (스프링 부트는 5 사용)
5. 해당 소스 우클릭 -> Run As -> JUnit Test 실행
6. 실행하면 결과가 나오는데 성공/실패/스킵 여부를 나타낸다.
실패한 경우 어느부분에서 실패를 했는지 알려준다.
--junit pom.xml 설정
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
'개발 지식 > 개념' 카테고리의 다른 글
Log4j :: 로그 기록 도구 (2) | 2024.06.02 |
---|---|
Task Tag :: 이클립스 TODO 활용하기 (2) | 2024.05.01 |
JavaDoc :: 자바 API 문서 (0) | 2024.05.01 |
빌드 관리 도구(Build Tool) (0) | 2024.04.29 |
DBeaver(디비버) 실행 오류 모음 (0) | 2024.04.22 |