inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Hướng dẫn Spring Boot với Kotlin cho người mới bắt đầu - Tạo trang web portfolio cá nhân

[Thực hành] Viết code test cho repository

org.junit.jupiter.api.extension.ParameterResolutionException: Failed to resolve parameter

Đã giải quyết

361

D Kim

6 câu hỏi đã được viết

0

테스트 코드 실행시 의존성 주입이 안되는 듯한 에러가 있습니다...

org.junit.jupiter.api.extension.ParameterResolutionException: Failed to resolve parameter [com.mkim.portfolio.domain.repository.ExperienceRepository experienceRepository] in constructor [public com.mkim.portfolio.domain.repository.ExperienceRepositoryTest(com.mkim.portfolio.domain.repository.ExperienceRepository)]: Failed to load ApplicationContext for [MergedContextConfiguration@41120e48 testClass = com.mkim.portfolio.domain.repository.ExperienceRepositoryTest, locations = [], classes = [com.mkim.portfolio.PortfolioApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.OverrideAutoConfigurationContextCustomizerFactory$DisableAutoConfigurationContextCustomizer@15bb5034, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.filter.TypeExcludeFiltersContextCustomizer@34be3d80, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@854e4b26, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@7a35b0f5, [ImportsContextCustomizer@165a5979 key = [org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration, org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManagerAutoConfiguration, org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration, org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration, org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration, org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration, org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.JdbcClientAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration]], org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@7bd7d6d6, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@2a8448fa, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@4d8dfd98], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
image.png

@Autowired 도 잘 넣은듯한데 왜 해당 에러가 발생하는지를 파악을 못하고 있습니다...

test를 하려하는 타겟 레포지토리도 하위 경로에 잘 존재합니다.

image.png
interface ExperienceRepository : JpaRepository<Experience, Long> {
    fun findAllByIsActive(isActive: Boolean): List<Experience>
}

현재 플러그인과 디펜던시는 아래와 같습니다.

plugins {
	id("org.springframework.boot") version "3.3.0"
	id("io.spring.dependency-management") version "1.1.5"
	kotlin("plugin.jpa") version "1.9.24"
	kotlin("jvm") version "1.9.24"
	kotlin("plugin.spring") version "1.9.24"
}

dependencies {
	implementation("org.springframework.boot:spring-boot-starter-data-jpa")
	implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
	implementation("org.springframework.boot:spring-boot-starter-validation")
	implementation("org.springframework.boot:spring-boot-starter-web")
	implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
	implementation("org.jetbrains.kotlin:kotlin-reflect")
	runtimeOnly("com.h2database:h2")
	runtimeOnly("com.mysql:mysql-connector-j")
	testImplementation("org.springframework.boot:spring-boot-starter-test")
	testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
	testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}

제가 확인해야할 부분을 잘 못찾고 있는듯합니다... 혹시 제가 놓치는 부분이 있을까요?

kotlin mysql docker spring-boot jpa

Câu trả lời 2

0

D Kim

의존성 주입이, 제가 레포지토리 작성시 레포지토리 내의 함수명을 유의깊게 확인하지 않고 타겟 엔티티의 변수와 일치하지 않는 이름을 사용하여, 해당 레포지토리가 생성되지 않고, 테스트 레벨에서는 해당 레포지토리가 없다는 에러로 내 뱉었습니다...

도움을 주셔서 감사합니다.

답변 남겨주신 내용도 참고하여 혹시 몰라 강의에서 사용하지 않는 디펜던시는 모두 제거 하였습니다 :)

0

infomuscle

안녕하세요 정보근입니다:)

 

현재 올려주신 자료만으로는 정확한 원인을 파악하기는 어렵네요.

 

출력된 예외를 보면 DataJpaTest 관련 설정에서 오류가 있는 것으로 보이긴 합니다.

 

ParameterResolutionException이 junit에서 던지는 예외인 걸 볼 때 디버깅 시작해볼 수 있는 지점은

 

org.jetbrains.kotlin:kotlin-test-junit5와 org.junit.platform:junit-platform-launcher입니다.

 

제가 강의에서 사용하지 않은 디펜던시인데 어떤 이유로 추가하셨는진 모르겠지만

 

총 3개의 테스트 관련 라이브러리가 사용되면서 버전 관련 문제가 발생한 건 아닐까 의심되네요.

 

2개 디펜던시 제거 후 Gradle 새로고침 후 재시도 해보셔도 좋을 것 같습니다.

 

보다 정확한 원인 파악이 필요하시면 깃허브 리포지토리 공유해주시면 함께 봐보겠습니다.

 

감사합니다.

Windows 환경에서 작업중

0

77

1

강의 자료 다운로드에 관해

0

160

2

도커 파일을 빌드 시킬때 오류가 발생하는데 무슨 에러인가요..

0

168

2

Admin 뷰 템플릿 유료화 여부 및 변경 사항 문의드립니다.

0

228

2

테스트 코드 작성 중 AssertionError 발생

0

255

4

메모리 크기

0

130

2

클래스 생성 강의 수강 중 오류 발생

0

126

1

리액트 연결

0

154

2

Docker Compose 배포 시 Jasypt 암호화된 속성 복호화 문제 해결 방법

1

284

2

도커로 크롬에서 프로그램 열기

0

303

2

DBeaver 연결부터 도커로프로젝트 빌드까지 안됩니다.

0

318

2

뷰 개발 파일 없음

0

149

2

fragment 분리 에러

0

126

1

admin 페이지에서 projectSkill 질문 있습니다

0

114

2

서버 배포 후 수정하려고 하면

0

288

2

docker-compose 파일 작성하기 질문 있습니다.

0

287

2

Admin 뷰개발-테이블 페이지와 관련한 질문드립니다.

0

185

1

Docker 데스크탑에서 push to Docker hub 를 클릭한 후 오류가 납니다...

0

382

3

ExperienceRepositoryTest 실행 오류

0

141

2

projectRepository assertion 오류 질문입니다.

0

189

1

테스트코드 실행중 오류와 경고에 관한 질문 입니다.

0

241

2

@PostCunstructer 를 사용하는 이유가 뭔가요?

0

275

2

환경변수 설정을 yml 아니라 properties로 해도 상관 없나요?

0

117

1

git 사용 오류 질문 드립니다

0

208

2