Super Kawaii Cute Cat Kaoani
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ธํ”„๋ผ

gradle build ์‹œ DB ์—ฐ๋™ test ์—๋Ÿฌ

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'
}

์ฐธ๊ณ : https://stackoverflow.com/questions/41315386/spring-boot-1-4-datajpatest-error-creating-bean-with-name-datasource