- 테스트를 실행하기 앞서서
Implement Layer는 SpringBootTest를 사용하여 통합테스트를 진행하였습니다.
- 그리고
Truncate를 사용한 database cleaner를 선언하여 @BeforeEach(매 테스트 전에 실행) 하도록 선언해 주었습니다.
- 그리고 해당
ImplementTest를 구현한 MemberUpdaterTest와 MemberFinderTest에서 문제가 발생했습니다.
2. 독립 실행 결과
1) 테스트1 - memberId로 프로필 조회 시 프로필 정보를 반환한다.
@DisplayName("memberId로 프로필 조회 성공시 프로필 정보를 반환한다.")
@Test
void getProfileByMemberId() {
// given
UniversityJpaEntity universityJpaEntity = UniversityJpaEntity.builder()
.universityName("universityName")
.build();
DepartmentJpaEntity departmentJpaEntity = DepartmentJpaEntity.builder()
.departmentName("departmentName")
.universityId(1L)
.build();
MemberJpaEntity memberJpaEntity = MemberJpaEntity.builder()
.universityId(1L)
.departmentId(1L)
.build();
universityRepository.save(universityJpaEntity);
departmentRepository.save(departmentJpaEntity);
memberRepository.save(memberJpaEntity);
long memberId = memberJpaEntity.getId();
// when
MemberProfileResponse memberProfileResponse = memberFinder.getMemberProfile(memberId);
// then
assertThat(memberProfileResponse.universityName()).isEqualTo("universityName");
assertThat(memberProfileResponse.departmentName()).isEqualTo("departmentName");
}
개별적으로 테스트를 실행할 경우 다음과 같이 저장됩니다.
[1] university 테이블
| id |
university_name |
| 1 |
universityName |
[2] department 테이블
| id |
university_id |
department_name |
| 1 |
1 |
departmentName |
| id |
university_id |
department_name |
| 1 |
1 |
departmentName |
[3] member 테이블
| id |
university_id |
department_id |
… |
| 1 |
1 |
1 |
… |
getMemberProfile 메서드는 내부적으로 다음 QueryDSL문을 실행합니다.