testCode 작성중 h2와 연결해 test를 해보려고 하는데 동작이 되질 않았다
ava.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@18460128 testClass = miniproject.fintech.service.MemberServiceTest, locations = [], classes = [miniproject.fintech.FintechApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTestContextBootstrapper=true"], contextCustomizers =
...
우선 DataSource를 자동으로 구성하려고 하는데 문제가 발생했다고 보인다...
해결방법으로 사용했던 것 중 첫번째는 h2에 쿼리를 다시 작성해보는 것이다.
CREATE TABLE bank_member (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
account_number VARCHAR(255),
address VARCHAR(255),
age INT,
birth DATE,
created_at TIMESTAMP,
deleted_at TIMESTAMP,
grade VARCHAR(255),
name VARCHAR(255),
password VARCHAR(255)
);
두번재는 yml의 설정을 다시 틀린 부분이 없는지 체크
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/fintech
driver-class-name: org.h2.Driver
username: sa
password:
jpa:
database-platform: org.hibernate.dialect.H2Dialect
h2:
console:
enabled: true
세번째는 @DataJpaTest를 넣어 JPA 관련 컴포넌트만 로드 하게끔 하면 된다.
나는 쿼리를 다시 짜보니 잘 되었다... Table 명이 잘못되어 있었다... 내 삽질... ㅠ
@SpringBootTest
class MemberServiceTest {
@Autowired
private MemberService memberService;
@Autowired
private MemberRepository memberRepository;
@Test
void saveMember(){
BankMember bankMember = BankMember.builder()
.name("아리")
.password("123456789")
.accountNumber("abc123")
//.id(1L) 자동 할당 됨으로 굳이 필요 없음
.age(20)
.birth(LocalDate.of(1995, 6, 5))
.createdAt(LocalDateTime.now())
.grade(Grade.NORMAL)
.address("서울")
.build();
BankMember saveMember = memberService.save(bankMember);
assertNotNull(saveMember.getId());
assertThat(saveMember.getName()).isEqualTo("아리");
assertThat(saveMember.getPassword()).isEqualTo("123456789");
}
}