JPA 로 회원등록 테스트를 하는 도중 자꾸 이 에러가 미친듯이 뜨는게 아닌가 ㅠ
@DataJpaTest
public class JPATest {
@Autowired
UserRepository userRepository;
@Test
@DisplayName("회원가입 테스트")
void regUserInfo(){
UserEntity userEntity = UserEntity.builder().id("test")
.name("테스트")
.password("1234")
.birth("601122")
.gender("M")
.role("ADMIN")
.address("서울시")
.phone("01077778888")
.email("test@test.com")
.build();
UserEntity result = userRepository.save(userEntity);
System.out.println("createdDate = " + result.getCreateAt());
System.out.println("modifiedDate = " + result.getUpdateAt());
}
}
음 ... datasource 설정을 가져오다 실패하는구만!!! 하고 열심히 구글링을 하니,
@DataJpaTest 는 기본적으로 각 테스트마다 롤백을 진행하고, 테스트에는 내장 in-memory 데이터베이스를 사용해서 생기는 문제라 한다. (참고로 나는 MySQL 을 쓰는중)
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) 어노테이션을 이용해 dataSource를 변경하지 않고 내가 설정한 MySQL 을 쓰겠다고 명시.
히히 그럼 다시 해봐야지
하지만 동일하게 문제가 또 발생
아니 대체 왜....ㅠ ㅠ 그대로 따라해봤는데 안된다고!!!
결국에 원인을 찾았다.
내가 Mybatis 와 JPA 를 같이 쓰려고 아래와 같이 Multiple DataSource 설정을 해놨기 때문....ㅜㅜ
@Bean
@ConfigurationProperties(prefix="spring.datasource")
public DataSource mysqlDataSource() {
return DataSourceBuilder.create().build();
}
이런 경우엔 등록한 데이터소스 클래스를 따로 Import 시켜줘야 한다고 한다.
@ImportAutoConfiguration(DatabaseConfig.class)
해당 어노테이션 추가
실행해보면 잘된당!
참고
https://wave1994.tistory.com/181
https://velog.io/@chlwogur2/DataJpaTest-Error-creating-bean-with-name-dataSource-%EC%97%90%EB%9F%AC
'web > SpringBoot' 카테고리의 다른 글
ErrorContoller 오류처리 (0) | 2023.09.06 |
---|---|
Global Exception 처리 (0) | 2023.09.06 |
Spring Boot 3.1.x 으로 RestFul API 서버 만들기(3) (0) | 2023.08.31 |
Spring Boot 3.1.x 으로 RestFul API 서버 만들기(2) (2) | 2023.08.28 |
SpringBoot 구조와 원리 (0) | 2023.08.22 |