스프링부트 JUnit
- TDD (Test-driven Development)
: 테스트 주도 개발에서 사용하지만, 코드의 유지 보수 및 운영 환경에서의 에러를 미리 방지하기 위해서 단위 별로 검증하는 테스트 프레임워크- 단위테스트
: 작성한 코드가 기대하는대로 동작을 하는지 검증하는 절차- JUnit
: Java기반의 단위 테스트를 위한 프레임워크
: Annotation기반으로 테스트를 지원하며, Assert를 통하여 검증한다.: JUnit을 활용하지 않고 테스트 코드를 진행하게 된다면,
실제 운영을 해야 할 코드에 계속 수정이 가해지게 되어 안정성이 떨어지게 될 수 있다.
그러므로,junit-jupiter, mockito를 활용하여 테스트 코드를 작성하고 동작을 확인하면 된다.[예시] - Java 에서 활용하는 경우
build.gradle에 아래의 dependency를 주입하여야 한다.
- junit-jupiter
- Mockito
- Mockito JUnit Jupiter
@ExtendWith(MockitoExtension.class) public class UsCalculatorTest { @Mock public MarkApi markApi; @BeforeEach public void init(){ Mockito.lenient().when(markApi.connect()).thenReturn(3000); } @Test public void testHello() { System.out.println("hello JUnit"); } @Test public void dollarTest() { MarkApi markApi = new MarkApi(); UsCalculator usCalculator = new UsCalculator(markApi); usCalculator.init(); Calculator calculator = new Calculator(usCalculator); Assertions.assertEquals(22000, calculator.sum(10, 10)); } @Test public void dollarMockTest() { UsCalculator usCalculator = new UsCalculator(this.markApi); usCalculator.init(); Calculator calculator = new Calculator(usCalculator); Assertions.assertEquals(22000, calculator.sum(10, 10)); } }
스프링 부트 Web MVC CRUD 테스트
Post 요청에 대한 RestController Method
RestController Test Class
- WebMvcTest Annotation 을 사용하여, 대상 class 지정
- Component 주입을위하여 Import Annotation 사용
- MockBean
테스트 커버리지
- Jacoco
: Java코드의 코드 커버리지를 체크하는 라이브러리
: 결과를 html, xml, csv로 확인이 가능하다.
[설정방법]
1) build.gradle plugins 항목에 id 'jacoco' 추가
2) gradle 탭에 Tasks > Verification > Test 실행
(jacocoTestReport발행을 위해서는 test가 먼저 실행되어야 함)