2023.04.25 - [TIL] - Spring | 단위 테스트 vs 통합 테스트
Spring | 단위 테스트 vs 통합 테스트
단위 테스트 [ 정의 ] 단위 테스트는 앱의 작은 단위(일반적으로 메서드)를 사용하여 코드의 나머지 부분에서 격리하고 예상대로 작동하는지 확인한다. 스프링 컨테이너 없이 하는 순수한 테스
megak.tistory.com
이번 포스트는, 통합 테스트를 진행하던 중 발생한 오류를 해결하는 과정이다.
[ 문제 상황 ]
통합테스트 구현을 위해 다음과 같이 @Transactional 어노테이션을 사용하고 싶은데, import 할 수 없는 상황이다.
왜 일까?
[ 이유 ]
먼저, 해당어노테이션에 대해 알아보자
@Transactional
트렌젝션에 해당 어노테이션이 있으면, 테스트 시작전에 트랜잭션을 시작하고 테스트 완료 후 항상 롤백하는 기능을한다.
@Test 어노테이션 마다 실행되며 DB에 데이터가 남게 하지않게 하기 위한 방법이다.
기본적으로 Java 와 DB 를 연결하기 위해서는 jdbc 가 필요한데, 해당 라이브러리를 임포트하는 과정을 빠뜨린 것이다!
그렇다면 어서 임포트해주자
[ 해결 ]
1 ) build.gradle 에서 dependencies 안에 작성할 것
- 라이브러리 설치
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
runtimeOnly 'com.h2database:h2'
2) application.properties 에 작성할 것
- 사용하는 db 에 대한 정보
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
db로 h2를 선택하였기 때문에 해당하는 정보를 적어주었다.
그럼 다음과 같이 import 할 수있게 된다.
[ 참고 ]
인프런 - "스프링 입문 - 코드로 배우는 스프링 부트,웹 MVC, DB 접근 기술" (무료) 를 수강하며 발생한 오류 해결과정.
'Spring & Spring Boot' 카테고리의 다른 글
Spring Framework , Spring , Spring Boot 간단 정리 (0) | 2023.11.28 |
---|---|
의존성 주입이란? + @Autowired , IoC (0) | 2023.11.02 |
@Autowired(required = false) 사용 목적 (0) | 2023.11.02 |
springframework 템플릿 엔진 - thymeleaf, mustache (0) | 2023.05.11 |
단위 테스트 vs 통합 테스트 (0) | 2023.04.25 |