JUnit이란?
- Java 기반의 단위 테스트를 위한 프레임워크
- 어노테이션 기반으로 테스트를 지원한다.
- Assert를 통하여 (예상, 실제)를 통해 검증한다.
관련 개념
- TDD (Test-driven Development)
- 코드의 유지 보수 및 운영 환경에서의 에러를 미리 방지하기 위해서 사용하는 단위 검증 테스트 프레임워크
- 단위 테스트
- 작성한 코드가 기대하는 대로 동작하는지 검증하는 절차
JUnit 특징
- JUnit에서는 각각의 테스트가 서로 영향을 주지 않고 독립적으로 실행되는 것을 지향한다.
설치 방법
- xml
- gradle
Junit 제공 어노테이션
- @Test
- 테스트를 수행하는 메소드를 지정하는 어노테이션
- @Test 단위 마다 필요한 객체를 생성해 지원해준다.
- @Ignore
- 테스트를 실행하지 않도록 해준다.
- 메소드는 남겨두되 테스트에 포함되지 않도록 하려면 @Ignore 어노테이션을 추가한다.
- @Before / @After
- 테스트 메소드가 실행되기 전/후로 항상 실행되는 메소드를 지정한다.
- @BeforeClass / @AfterClass
- 해당 클래스에서 각각 한번만 수행되는 메소드를 지정한다.
- 테스트 메소드의 갯수와 상관없이 반드시 한번만 실행된다.
Junit 기본 사용법
- src/test/java 폴더에 원하는 테스트할 클래스에 대한 클래스를 만든다.
- 관례 : 만약 테스트할 클래스가 sample.class이면 sampleTest.class를 만든다.
- 테스트할 메소드를 만들고 해당 메소드에 @Test 어노테이션을 추가한다.
- 해당 메소드 안에서 확인해야할 값은 System.out.println()같은 걸로 출력하는 것이 아니라
Assertions.assertEquals(로직을 통해 나온 값, 정상작동시 나와야할 값);처럼 코드를 작성하여 테스트한다.
spring-boot-starter-test의 하위 라이브러리
- JUnit 5 (빈티지 엔진 포함, 이유 : JUnit 4와의 호환성)
- 스프링 테스트 및 스프링 부트 테스트
- AssertJ
- Hamcrest
- Mockito
- JSONassert
- JsonPath
spring-boot-starter-test 제공 어노테이션
- @SpringBootTest
- @WebMvcTest
- @DataJpaTest
- @RestClientTest
- @JsonTest
- @WebFluxTest
- @JooqTest
- @DataLdapTest
- @DataNeo4jTest
- @DataRedisTest
src/test/java 폴더가 보이지 않는 오류 해결법
- 해당 프로젝트 우클릭
- Properties 클릭
- Java Build Path 메뉴 선택
- Order And Export 항목 선택
- src/test/java 폴더를 최상단으로 이동 후 저장
- src/test/java 폴더의 위치를 정상적으로 이동 후 저장
Jacoco
- Java 코드의 코드 커버리지를 체크하는 라이브러리
- 결과를 html, xml, csv로 확인가능하다.