Repository ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํด @DateJpaTest๋ฅผ ์์ฑํ์๋ค.
๋ก์ปฌ์์๋ ํ ์คํธ์์ MySql๊ณผ ์ฐ๋ํ์ฌ ์ฌ์ฉํ๊ธฐ ์ํด ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ์๋์ ๊ฐ์ด ํ ์คํธ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
class PetRepositoryTest {
@Autowired
private PetRepository petRepository;
@Autowired
private GroupRepository groupRepository;
@Test
@DisplayName("๊ทธ๋ฃน id๋ก ์กฐํ")
@Transactional
void get_by_groupId(){
Group group = Group.builder().name("๊ทธ๋ฃน์ด๋ฆ").build();
Group saved = groupRepository.save(group);
petRepository.save(Pet.builder().name("hoon").group(saved).build());
petRepository.save(Pet.builder().name("hoon2").group(saved).build());
petRepository.save(Pet.builder().name("hoone").group(saved).build());
List<Pet> pets = petRepository.findAllByGroupId(saved.getId());
assertEquals(3, pets.size());
}
}
๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ํ๋ gradle build์์ application.yml ์ค์ ๋ง ์ ์ฉ๋์ด ํ ์คํธ ์งํ์ด ๋์ง์์ build์ ์คํจํ์๋ค.

โญ๏ธ ํด๊ฒฐ
@DataJpaTest
๊ธฐ๋ณธ์ ์ผ๋ก @DataJpaTest๋ in-memory DB๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋์ ๋ณดํต application.yml์ DB ์ค์ ์ ๋ฌด์ํ๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๋ง๋ ์ต์ ์ ์ฃผ๋ ๊ฒ์ด @AutoConfigureDatabase ์ด๋ ธํ ์ด์ ์ด์๋ค.
๊ทธ๋์ ๊ฐ๋ฐํ ๋๋ MySql๊ณผ ์ฐ๋ํ์ฌ ๋ณด๋ฉด์ ํ๋ ๊ฒ์ด ํธ๋ฆฌํ๊ฒ ์ง๋ง, ๋น๋๋ฅผ ์ํด ๋ค์ in memory๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ค์ ์ ๋ฐ๊ฟ์ฃผ์๋ค.
โจ๏ธ TestCode
@AutoConfigureDatabase ์ด๋ ธํ ์ด์ ์ ์ญ์ ํ์๋ค.
@DataJpaTest
class PetRepositoryTest {
@Test
@DisplayName("๊ทธ๋ฃน id๋ก ์กฐํ")
@Transactional
void get_by_groupId() {
...
}
}
โจ๏ธ build.gradle
h2 DB๋ฅผ ์ด์ฉํ๊ธฐ ์ํด test ์์ dependency๋ฅผ ์ถ๊ฐํ์๋ค.
dependencies {
...
testImplementation 'com.h2database:h2'
}