问题描述
我有一个项目,它会在启动时自动启动作业,以防没有给出特定的程序参数。
问题:在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);
}
}
我该如何预防?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)