Spring Test
Spring 3,4 에서 테스트 코드를 작성할 때 사용한 코드
테스트를 위한 환경설정, 테스트 실행 시간을 줄이기 위해 테스트에 필요한 객체만 스프링 빈으로 올리는 방법
spring-test-3.0.5 (Spring 3.0.5 기준)
Spring 3.0.5 에서 Ibatis -> Mybatis 로 변경하는 작업을 하다 알게된 내용을 기록
@ActiveProfiles
어노테이션이 없음System.setProperty
를 사용해 profile 지정 가능
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
locations = {
"classpath:sigong/resource/spring/test-config.xml",
"classpath:sigong/resource/spring/context-datasource.xml"
}
)
public class RoadmapTest {
@BeforeClass
public static void setUp() {
System.setProperty("test-component-scan", "dao.myroadmap");
System.setProperty("spring.profiles.active", "local");
}
}
spring-test-4.3.7 (Spring Boot 1.5.2)
기능 리팩터링 전에 테스트 코드를 만들어 리팩터링 후에도 기능이 정상적으로 동작하는지 확인하기 위해 구현
@Sql
원하는 쿼리를 sql 파일로 만들어 테스트 실행시 쿼리를 함께 실행할 수 있다.@ActiveProfile
로 Profile 지정 가능하다.@ContextConfiguration
,@TestPropertySource
를 사용하면 특정 클래스, xml, properties 등 테스트에 필요한 파일을 주입해 원하는 테스트 환경을 만들어 줄 수 있다.
@Documented
@Inherited
@Retention(RUNTIME)
@Target({TYPE, METHOD})
@Sql(scripts = {
"classpath:test-h2-auth-member-schema.sql"
},
config = @SqlConfig(encoding = "UTF-8"))
public @interface MemberH2InitSql {
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@ActiveProfiles("test-member-h2")
@ContextConfiguration(classes = {MemberH2JpaConfig.class})
@TestPropertySource(locations = "classpath:/application-test-member-h2.properties")
@MemberH2InitSql
public @interface MemberH2JpaIntTest {
String[] componentScanPackages() default {};
}
@Configuration
@Import({MemberTestMasterAuthDatabaseConfig.class, MemberTestJpaConfiguration.class})
@ComponentScan(basePackages = "com.sigongedu.oauth2.member.*",
useDefaultFilters = false,
includeFilters = {
@ComponentScan.Filter(
type = FilterType.REGEX,
pattern = ".*GivenHelper.*")
},
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION,
classes = {Configuration.class})
})
public class MemberH2JpaConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
Last modified: 31 December 2024