如何跳过spring引导测试中的应用程序参数条件?

mwngjboj  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(283)

我有一个项目,在启动时自动启动作业,以防没有特定的程序参数已给出。
问题:在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);
   }
}

我怎样才能预防呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题