여기서는 애플리케이션을 구동할 때 더미 데이터를 넣어주는 init 함수를 만들어보자.
애플리케이션이 실행될 때는 더미데이터가 들어가지만, 테스트케이스가 실행될 때는 init 함수가 동작되지 않도록 application.yml 을 설정한다.
spring:
profiles:
active: local
#...(생략)...
spring:
profiles:
active: test
#...(생략)...
이렇게 분리하면 main 소스코드와 테스트 소스 코드 실행시 프로파일을 분리할 수 있다.
@Profile("local")
@Component
@RequiredArgsConstructor
public class InitMember {
private final InitMemberService initMemberService;
@PostConstruct
public void init(){
initMemberService.init();
}
@Component
static class InitMemberService{
@PersistenceContext
private EntityManager em;
@Transactional
public void init(){
Team teamA = new Team("teamA");
Team teamB = new Team("teamB");
em.persist(teamA);
em.persist(teamB);
for (int i = 0; i < 100; i++) {
Team selectedTeam = i % 2 == 0 ? teamA : teamB;
em.persist(new Member("member" + i, i, selectedTeam));
}
}
}
}