1. Testing
- [SoftWare Development Testing]
- [종류]
- 시스템 테스트
- 통합되어 구축된 시스템을 테스트 하는 단계를 말합니다
- 통합 테스트
- 서로 다른 모듈이 상호작용 하는 것을 테스트 하는 단계를 말합니다
- [기능]
- Controller, Service, Repository의 개별 메소드를 이용합니다
- 단위 테스트
- 개별 코드 단위(주로 메소드)를 테스트 하는 단계를 말합니다
- [기능]
- Controller 부터 Repository 까지 이어진 기능을 말합니다
- [장점]
- 잘못된 방향의 개발을 막습니다 (이전에 작동하던 기능이 작동하지 않는 상황 등)
- 전체적인 코드의 품질이 상승됩니다
- 최종적으로는 오류 상황에 대한 대처가 좋아져서 전체적인 개발 시간이 줄어들기 시작합니다
- [단점]
- 결국엔 코드를 작성하는 것이고, 개발 시간이 늘어납니다
- 테스트 코드도 유지보수가 필요해서 유지보수 비용도 늘어납니다
- 테스트 작성법을 따로 배워야 합니다
- [Spring Boot Test Tools]
- JUnit
- 사실상의(de-facto) Java 어플리케이션 Testing표준 라이브러리 입니다
- SpringTest
- Spring 어플리케이션 Test지원 라이브러리 입니다
- AssertJ
- 가독성 높은 Test작성을 위한 라이브러리 입니다
- Hamcrest
- Test진행시 제약사항 설정을 위한 라이브러리 입니다
- Mockito
- Test용 Mock라이브러리 입니다
- JSONassert
- JSON용 Assertion 라이브러리 입니다
- JsonPath
- JSON데이터 확인용 라이브러리 입니다
- [H2]
- 초기 단계의 개발 및 테스트에서 많이 활용하는, 메모리에서 동작하는 관계형 데이터베이스라고 합니다
- [Annotation]
- @Test
- 테스트를 수행하는 메소드라는 의미입니다
- @Mock
- 주입할 Service 객체를 Mock인스턴스로 선언한다는 의미입니다
- @InjectMocks
- Mockito의 어노테이션으로 특정 객체의 필드에 @Mock, @Spy 어노테이션이 지정된 객체를 주입할 수 있습니다
- @BeforeEach
- 각 Test 메서드가 실행되기 전에 실행되는 메서드를 표시하는 어노테이션 입니다
- [Interface]
- MockMvc
- 개발한 웹 프로그램을 실제 서버에 배포하지 않고도 Test를위한 요청을 제공하는 것을 말합니다
- [Class]
- MockMvcBuilders
- SpringMVC Test에서 사용되는 빌더 클래스를 말합니다
- MockMvc 객체를 쉽게 생성하여 Test하는데 사용하기 위함을 명시하는 것입니다