首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >黄瓜+ spring:如何通过测试触发SmartLifecycle事件?

黄瓜+ spring:如何通过测试触发SmartLifecycle事件?
EN

Stack Overflow用户
提问于 2020-01-09 18:53:29
回答 1查看 310关注 0票数 0

我有一个黄瓜的弹簧引导应用程序。在调用bean的start-SmartLifecycle之前,我想在测试中执行某些事件。

代码语言:javascript
复制
Given Something that needs to happen before beans are started
And Beans start up now
Then Life is good

有办法做到这一点吗?默认情况下,Spring在执行任何Cucumber语句之前初始化并启动所有bean。

示例:

代码语言:javascript
复制
class Context {
  @Bean
  SomeBean someBean() { return new SomeBean(); }
}

class SomeBean implements SmartLifecycle {
  @Override
  void start() {
    // some meaningful work that depends on setup that needs to be done beforehand
  }
  // rest of interface implementation
}

黄瓜定义文件:

代码语言:javascript
复制
 @ContextConfiguration(classes = Context.class)
 class CucumberFeatures {
   @Autowired
   private SomeBean someBean;

   @Given("Something that needs to happen before beans are started")
   public void something() {
     // ...
   }

   @Given("Beans start up now")
   public void beansStarted() {
     // This should start beans in their defined order now
   }

   @Then("Life is good")
   public void lifeIsGood() { ... }
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-10 10:34:50

在使用同一个容器将依赖项注入到测试中时,不能测试依赖项注入容器。注入依赖项要求已经刷新了应用程序上下文。

因此,您必须手动创建ApplicationContext的实例,并亲自管理它的生命周期。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59670450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档