Spring Tests에서 스케쥴링 제외하기

2020. 11. 10. 23:55개발&TIL/스프링

스프링 배치에서 @Scheduled(fixedDelay = 10 * 1000) 로 선언된 스케쥴링이 테스트 실행시 실행되는 현상을 제거

ConditionalOnProperty 애너테이션을 추가하여 셋팅

  • 설정
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.scheduling.annotation.EnableScheduling
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler

@Configuration  
@EnableScheduling  
@ConditionalOnProperty( value = ["app.scheduling.enable"], havingValue = "true", matchIfMissing = true)  
class BatchSchedulingConfiguration {

@Bean
fun taskScheduler(): ThreadPoolTaskScheduler {
    return ThreadPoolTaskScheduler().apply {
        // 종료 처리 중 작업 중인 task가 있는 경우
        // 쓰레드에 interrupt를 보내지 않고 awaitTerminationSeconds 만큼 기다린다.
        setWaitForTasksToCompleteOnShutdown(true)

        // 종료 전 모든 작업이 완료되기까지 최대 300초를 기다린다.
        setAwaitTerminationSeconds(300)

        // thread name
        setThreadNamePrefix("scheduler")

        isRemoveOnCancelPolicy = true

        // 쓰레드풀은 10개 유지
        poolSize = 10
    }
}
  • 테스트 코드 (app.scheduling.enable=false 추가)
import mu.KLogging  
import org.junit.Assert  
import org.junit.jupiter.api.BeforeEach  
import org.junit.jupiter.api.Test  
import org.junit.jupiter.api.extension.ExtendWith  
import org.springframework.boot.test.context.SpringBootTest  
import org.springframework.test.context.TestPropertySource  
import org.springframework.test.context.junit.jupiter.SpringExtension  
import org.springframework.transaction.annotation.Transactional

@ExtendWith(SpringExtension::class)  
@SpringBootTest()  
@TestPropertySource(properties = ["app.scheduling.enable=false"])  
@Transactional  
internal class BatchUtilTest {  
companion object: KLogging()

    @BeforeEach
    fun setUp() {
    }

    @Test
    fun test() {
        Assert.assertTrue(true)
    }
}  
728x90

'개발&TIL > 스프링' 카테고리의 다른 글

스프링부트 - #5 oAuth2  (0) 2020.11.17
스프링부트 - #4 web  (0) 2020.11.17
스프링부트 - #3 테스트  (0) 2020.11.17
스프링부트 - #2 환경설정  (0) 2020.11.17
스프링 부트 - #1 소개  (0) 2020.11.17