๐ฑ ๋ฌธ์ ์ํฉ
๋ฉํฐ๋ชจ๋ ํ๋ก์ ํธ ํ ์คํธ๋ฅผ ํ๋ ์ค ๋๋ฉ์ธ ๋ชจ๋์์ @DataJpaTest๋ฅผ ์ฌ์ฉํ๋ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
@DataJpaTest๋ฅผ ์ฌ์ฉํ ๋, ์คํ๋ง ๋ถํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ์์๋ ์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ @SpringBootApplication ๋๋ @SpringBootConfiguration์ด ๋ถ์ ํด๋์ค๋ฅผ ํตํด ํ์ ํจํค์ง๋ฅผ @ComponentScan ๋ฐ @EntityScan ๋ฑ์ ์์ ์ ํตํด ์ค์บํ๊ณ , ๋น(bean)์ ๋ฑ๋กํ์ฌ ์ค์ ์ ์ ์ฉํ๊ฒ ๋๋ค.
๊ทธ๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฉํฐ๋ชจ๋ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ ์ธ์ ๋ค๋ฅธ ๋ชจ๋์์๋ @SpringBootApplication ํด๋์ค๋ฅผ ๋ง๋ค์ง ์๋๋ค. ์ด๋ก ์ธํด ๋๋ฉ์ธ ๋ชจ๋์์ @DataJpaTest์ ๊ฐ์ ์คํ๋ง ๋ถํธ ๊ธฐ๋ฐ ํ ์คํธ๋ฅผ ์คํํ๋ ค๊ณ ํ๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ๋ฅผ ์ค์ ํ ์ ์์ด IllegalStateException: Unable to find a @SpringBootConfiguration ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๐ฑ ํด๊ฒฐ ๋ฐฉ์
ํ ์คํธ ๋ ๋ฒจ ์ต์์ ํจํค์ง์ @SpringBootApplication ํด๋์ค ๋ง๋ค๊ธฐ
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
์์์ ์ธ๊ธํ๋ฏ์ด ์คํ๋ง ๋ถํธ๋ @SpringBootApplication์ด ๋ถ์ ํด๋์ค๋ฅผ ํตํด ์๋ ์ค์ ๊ณผ ์ปดํฌ๋ํธ ์ค์บ์ ํ์ง๋ง ๋๋ฉ์ธ ๋ชจ๋์๋ @SpringBootApplication ํด๋์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ธ ํจํค์ง ์ค์บ์ ํ ์ ์๋ค.
๋ฐ๋ผ์ ํ ์คํธ ๋ ๋ฒจ ์ต์์ ํจํค์ง์ @SpringBootApplication ์ด๋ ธํ ์ด์ ์ด ์๋ ํด๋์ค๋ฅผ ๋ง๋ค๋ฉด, ์คํ๋ง ๋ถํธ๋ ์ด ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ๋ฅผ ์ค์ ํ ์ ์๊ฒ ๋๋ค.
๐ ๋๋ฉ์ธ DataJpaTest๋ฅผ ํ๋ฉด์ ์ถ๊ฐ์ ์ผ๋ก ์ค์ ํ ๊ฒ๋ค
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.querydsl.jpa.impl.JPAQueryFactory' available: expected at least 1 bean which qualifies as autowire candidate.
QueryDSL์ ์ฌ์ฉํ ๊ฒฝ์ฐ @TestConfiguration๋ฅผ ํตํด ๊ด๋ จ ๋น ์ถ๊ฐ๋ก ์ค์ ํ ํ ํ ์คํธ ํด๋์ค์์ ํด๋น config ํด๋์ค import
@TestConfiguration
public class TestConfig {
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(entityManager);
}
}
@Import(TestConfig.class)
@DataJpaTest
class ...Test { ... }
IllegalStateException: Cannot load driver class: org.h2.Driver
domain ๋ชจ๋์ build.gradle ํ์ผ์ h2 testImplementation ์ถ๊ฐ
dependencies {
...
testImplementation 'com.h2database:h2'
}