Maven을 사용하여 SpringBoot 응용 프로그램을 개발하고 있습니다.테스트 중에 예약 된 메서드가 호출됩니다.
나는 @Scheduled(initialDelay = 1000, fixedDelay = 5000)
주석이있는 @Component
주석이있는 클래스가 있습니다. 여기서 fixedDelay
은 으로 설정되어 작업 완료시 측정 된 호출 간격을으로 지정할 수 있습니다.
나는 또한 메인 클래스의 @EnableScheduling
주석했습니다
@RunWith(SpringRunner.class)
@SpringBootTest
public class BankitCrawlerTests {
...
}
예약 된 작업 m
는 매 5를 실행한다 : 나는 테스트를 실행할 때마다
@SpringBootApplication
@EnableScheduling
public class FieldProjectApplication {
public static void main(String[] args) {
SpringApplication.run(FieldProjectApplication.class, args);
}
}
지금과 같이 정의 초.
물론 응용 프로그램이 실행될 때마다 예약 된 작업을 실행하고 싶습니다. 테스트를 실행할 때 예약 된 작업이 실행되지 않도록하려면 어떻게해야합니까?
당신이 일을 끝낼되면@Configuration
@Profile("!test")
@EnableScheduling
class SchedulingConfiguration {
}
, 남아있는 유일한 것은 함께 테스트 클래스를 주석하여 테스트에서 "테스트"프로필을 활성화하는 것입니다 : 당신이 좋아하는 별도의 구성 클래스에 @EnableScheduling
을 추출 할 수 있습니다
당신은 내 시험에서 일정을 원하지 않는 것을 이해 했습니까? '@Profile ("! test")'는 테스트에서 _not_을 의미합니까? – nbro
"테스트"프로필이 활성화되어 있지 않으면 구성 클래스가 만들어집니다. –
[이 해결책] (http://stackoverflow.com/questions/29014496/disable-enablesceduling-on-spring-tests)에 대해 어떻게 생각하십니까? 필자는 (@ SpringBootApplication'을 사용하여 메인 클래스에 주석을 달아주는 것과는 별도로) 특정 설정을 만들지 않았습니다. 어디에서 일반적으로 새로운 설정을해야합니까? – nbro