어제 빌드하면서 에러가 발생했다. 이전에 프로젝트를 할 때도 같은 부분에서 에러가 발생했었는데 구글링해서 찾은 온갖 방법으로도 해결하지 못 하여서 결국 test 의존성을 삭제하고 test 파일 자체를 삭제한 기억이 있다.
어제 드디어 방법과 이유를 알았다. 정말 배움에는 끝이 없는 듯 하다.
🚨 문제 발생
Execution failed for task ':test'. 라는 에러가 떴다.
( 오랜만에 스프링부트로 프로젝트를 하려니 에러를 찾는 것도 익숙하지 않게 느껴졌다...ㅎㅎ)
🔑 해결방법
1. 설정 변경해주기
구글링해서 많은 사람들이 해결했다는 방법은
1. Ctrl + Alt + S 또는 File - Setting 으로 Setting 탭을 찾아 들어간다.
2. `Gradle` 을 검색하여 Build and run using & Run Tests using 을 Intellij IDEA로 바꾼다.
인데 이 설정은 진작에 해뒀기에 해결방법이 아니었다.
2. 의존성 JUnit4 추가 해주기
의존성을 변경해보기도 했지만 해결되지 않았다.
🔽 참고한 자료
🔗테스트 에러 문의 (Execution failed for task ':test'.) - 인프런
그래서 다시 원래대로 돌려놓았다.
dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
3. 데이터베이스 추가
에러 문구를 잘 살펴보니
Caused by: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException at DataSourceProperties.java:186
...
Failed to determine a suitable driver class
데이터 소스 빈을 생성하는 동안 적절한 드라이버를 찾지 못했다고 나와있었다. DB는 진작에 필요하지 않다고 생각해서 나중에 추가해야지 하고 의존성 추가를 안 했더니 발생한 오류였다.
문제를 해결하기 위해 h2 를 추가해주었다.
🔽 h2 의존성추가
dependencies {
implementation 'com.h2database:h2'
}
의존성 추가 후 빌드를 다시 하니 통과!
❓ 테스트 시 데이터베이스가 있어야 하는 이유
테스트 진행 시 데이터베이스가 있어야 하는 이유는 테스트를 하는 이유에 대해 생각해보면 바로 이해할 수 있다. 우리가 테스트를 진행하는 이유는 쿼리의 저장, 업데이트, 삭제와 같은 데이터 관련 로직들이 제대로 동작되고 관리되고 있는지 확인하기 위함이다. 그런데 이러한 역할을 하는 데이터베이스가 없으니 당연히 에러가 발생할 수 밖에 없다.
위의 이유로 컨트롤러, 서비스, 레포지토리 등 프로젝트를 구성하고 있는 요소들이 제대로 작동하고 있는지를 알 수가 없어지기 때문에 데이터베이스가 무조건 있어야 한다.
📖 참고 자료
🔗
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
'FRAMEWORK > SPRING' 카테고리의 다른 글
[Spring Boot] 스프링 부트 프로젝트 시작하기 / 프로젝트 생성하고 git 연동시키기 (1) | 2024.06.27 |
---|---|
[SPRING] spring boot 관리자 페이지 테스트 코드 작성하기 / 프로젝트 업그레이드 시키기 (2) | 2023.11.21 |
[SPRING] PROJECT 회원 관리 페이지 만들기 / spring boot 관리자 페이지 (2) | 2023.11.21 |
[SPRING] 작업 환경 분리하기 / 프로젝트 개발 환경, 배포 환경 profile 작업 (0) | 2023.11.15 |
[SPRING] 스프링 부트에서 의존성 못 찾을 때 `create class com.mysql.cj.jdbc.Driver` 에러 해결 방법 (0) | 2023.11.06 |