我有一个项目,在启动时自动启动作业,以防没有特定的程序参数已给出。
问题:在junit测试期间,我希望手动调用这些方法,并防止自动启动(因为在作业运行之前,我必须对测试进行更多的初始化)。
@Service
@Conditional(EmptyCondition.class)
public class MyDefaultJob implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) {
//executed on startup
}
}
class EmptyCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return CollectionUtils.isEmpty(
context.getBeanFactory()
.getBean(ApplicationArguments.class)
.getNonOptionArgs());
}
}
public static void main(String[] args) {
SpringApplication.run(YpsilonImporterApp.class, args);
}
因此,对于任何测试,上面的类都将自动执行:
@SpringBootTest
public class Test {
@Autowired
private MyDefaultJob job;
@Test
public void test() {
//how to prevent automatic start?
//do some mocking and initialization, then:
job.run(null);
}
}
我怎样才能预防呢?
暂无答案!
目前还没有任何答案,快来回答吧!