【问题标题】:Using Cucumber with @FlywayTest, do not work将 Cucumber 与 @FlywayTest 一起使用,不起作用
【发布时间】:2022-06-10 23:33:32
【问题描述】:

我正在尝试将@FlywayTest 与黄瓜一起使用(v7.2.3)。但它会产生错误

@SpringBootTest(webEnvironment = springBootTest.WebEnvironment.NONE)  
@CucumberContextConfiguration
@TestExecutionListeners(FlywayTestExecutionListener.class) 
@FlywayTest
@EnableAutoConfiguration 
@AutoConfigureEmbeddedDatabase(provider = ZONKY) 
public class CucumberSpringContextConfiguration {
} 

错误是:

记录全部/全部失败 io.cucumber.core.exception.CompositeCucumberException:有 2 例外。详细信息在下面的堆栈跟踪中。在 io.cucumber.core.runtime.RethrowingThrowableCollector.getThrowable(RethrowingThrowableCollector.java:57) 在 io.cucumber.core.runtime.CucumberExecutionContext.getThrowable(CucumberExecutionContext.java:122) 在 io.cucumber.core.runtime.CucumberExecutionContext.finishTestRun(CucumberExecutionContext.java:117) 在 io.cucumber.core.runtime.Runtime.execute(Runtime.java:94) 在 io.cucumber.core.runtime.Runtime.run(Runtime.java:85) 在 io.cucumber.core.cli.Main.run(Main.java:87) 在 io.cucumber.core.cli.Main.main(Main.java:30) 抑制: io.cucumber.core.backend.CucumberBackendException:没有合格的bean 类型 'my.project.cucumber.glue.CucumberSpringContextConfiguration' 可在 io.cucumber.spring.TestContextAdaptor.notifyTestContextManagerAboutAfterTestMethod(TestContextAdaptor.java:124) 在 io.cucumber.spring.TestContextAdaptor.stop(TestContextAdaptor.java:107) 在 io.cucumber.spring.SpringFactory.stop(SpringFactory.java:161) 在 io.cucumber.core.runner.Runner.disposeBackendWorlds(Runner.java:156) 在 io.cucumber.core.runner.Runner.runPickle(Runner.java:78) 在 io.cucumber.core.runtime.Runtime.lambda$executePickle$6(Runtime.java:128) 在 io.cucumber.core.runtime.CucumberExecutionContext.lambda$runTestCase$3(CucumberExecutionContext.java:151) 在 io.cucumber.core.runtime.RethrowingThrowableCollector.executeAndThrow(RethrowingThrowableCollector.java:23) 在 io.cucumber.core.runtime.CucumberExecutionContext.runTestCase(CucumberExecutionContext.java:151) 在 io.cucumber.core.runtime.Runtime.lambda$executePickle$7(Runtime.java:128) 在 java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) 在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 在 io.cucumber.core.runtime.Runtime$SameThreadExecutorService.execute(Runtime.java:249) 在 java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118) 在 io.cucumber.core.runtime.Runtime.lambda$runFeatures$3(Runtime.java:110) 在 java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) 在 java.base/java.util.stream.SliceOps$1$1.accept(SliceOps.java:199) 在 java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1632) 在 java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127) 在 java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502) 在 java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488) 在 java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) 在 java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) 在 java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 在 java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) 在 io.cucumber.core.runtime.Runtime.runFeatures(Runtime.java:111) 在 io.cucumber.core.runtime.Runtime.lambda$run$0(Runtime.java:82) 在 io.cucumber.core.runtime.Runtime.execute(Runtime.java:94) 在 io.cucumber.core.runtime.Runtime.run(Runtime.java:80) ... 还有 2 个 造成的: org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 符合条件的 bean 类型 'my.project.cucumber.glue.CucumberSpringContextConfiguration' 可在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:351) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342) 在 org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1172) 在 io.cucumber.spring.TestContextAdaptor.notifyTestContextManagerAboutAfterTestMethod(TestContextAdaptor.java:120) ... 30 更多

有没有办法让它正常运行?


更新 升级到版本 7.3.4 后出现以下错误

Before All/After All failed
io.cucumber.core.exception.CompositeCucumberException: There were 2 exceptions. The details are in the stacktrace below.
    at io.cucumber.core.runtime.RethrowingThrowableCollector.getThrowable(RethrowingThrowableCollector.java:57)
    at io.cucumber.core.runtime.CucumberExecutionContext.getThrowable(CucumberExecutionContext.java:102)
    at io.cucumber.core.runtime.CucumberExecutionContext.finishTestRun(CucumberExecutionContext.java:97)
    at io.cucumber.core.runtime.Runtime.execute(Runtime.java:94)
    at io.cucumber.core.runtime.Runtime.run(Runtime.java:85)
    at io.cucumber.core.cli.Main.run(Main.java:87)
    at io.cucumber.core.cli.Main.main(Main.java:30)
    Suppressed: io.cucumber.core.backend.CucumberBackendException: Error creating bean with name 'my.project.cucumber.glue.CucumberSpringContextConfiguration': Scope 'cucumber-glue' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is java.lang.IllegalStateException: Scenario scoped beans can only be created while Cucumber is executing a scenario
        at io.cucumber.spring.TestContextAdaptor.notifyTestContextManagerAboutAfterTestMethod(TestContextAdaptor.java:124)
        at io.cucumber.spring.TestContextAdaptor.stop(TestContextAdaptor.java:104)
        at io.cucumber.spring.SpringFactory.stop(SpringFactory.java:159)
        at io.cucumber.core.runner.Runner.disposeBackendWorlds(Runner.java:156)
        at io.cucumber.core.runner.Runner.runPickle(Runner.java:78)
        at io.cucumber.core.runtime.Runtime.lambda$executePickle$6(Runtime.java:128)
        at io.cucumber.core.runtime.CucumberExecutionContext.lambda$runTestCase$5(CucumberExecutionContext.java:129)
        at io.cucumber.core.runtime.RethrowingThrowableCollector.executeAndThrow(RethrowingThrowableCollector.java:23)
        at io.cucumber.core.runtime.CucumberExecutionContext.runTestCase(CucumberExecutionContext.java:129)
        at io.cucumber.core.runtime.Runtime.lambda$executePickle$7(Runtime.java:128)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at io.cucumber.core.runtime.Runtime$SameThreadExecutorService.execute(Runtime.java:249)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
        at io.cucumber.core.runtime.Runtime.lambda$runFeatures$3(Runtime.java:110)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
        at java.base/java.util.stream.SliceOps$1$1.accept(SliceOps.java:199)
        at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1632)
        at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
        at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
        at io.cucumber.core.runtime.Runtime.runFeatures(Runtime.java:111)
        at io.cucumber.core.runtime.Runtime.lambda$run$0(Runtime.java:82)
        at io.cucumber.core.runtime.Runtime.execute(Runtime.java:94)
        at io.cucumber.core.runtime.Runtime.run(Runtime.java:80)
        ... 2 more
    Caused by: org.springframework.beans.factory.support.ScopeNotActiveException: Error creating bean with name 'my.project.cucumber.glue.CucumberSpringContextConfiguration': Scope 'cucumber-glue' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is java.lang.IllegalStateException: Scenario scoped beans can only be created while Cucumber is executing a scenario
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:383)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1282)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1243)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:494)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:349)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342)
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1172)
        at io.cucumber.spring.TestContextAdaptor.notifyTestContextManagerAboutAfterTestMethod(TestContextAdaptor.java:120)
        ... 30 more
    Caused by: java.lang.IllegalStateException: Scenario scoped beans can only be created while Cucumber is executing a scenario
        at io.cucumber.spring.CucumberTestContext.requireActiveScenario(CucumberTestContext.java:70)
        at io.cucumber.spring.CucumberTestContext.get(CucumberTestContext.java:48)
        at io.cucumber.spring.CucumberScenarioScope.get(CucumberScenarioScope.java:11)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:371)
        ... 38 more
    Suppressed: io.cucumber.core.backend.CucumberBackendException: Error creating bean with name 'my.project.cucumber.glue.CucumberSpringContextConfiguration': Scope 'cucumber-glue' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is java.lang.IllegalStateException: Scenario scoped beans can only be created while Cucumber is executing a scenario
        at io.cucumber.spring.TestContextAdaptor.notifyTestContextManagerAboutAfterTestMethod(TestContextAdaptor.java:124)
        at io.cucumber.spring.TestContextAdaptor.stop(TestContextAdaptor.java:104)
        at io.cucumber.spring.SpringFactory.stop(SpringFactory.java:159)
        at io.cucumber.core.runner.Runner.disposeBackendWorlds(Runner.java:156)
        at io.cucumber.core.runner.Runner.runPickle(Runner.java:78)
        at io.cucumber.core.runtime.Runtime.lambda$executePickle$6(Runtime.java:128)
        at io.cucumber.core.runtime.CucumberExecutionContext.lambda$runTestCase$5(CucumberExecutionContext.java:129)
        at io.cucumber.core.runtime.RethrowingThrowableCollector.executeAndThrow(RethrowingThrowableCollector.java:23)
        at io.cucumber.core.runtime.CucumberExecutionContext.runTestCase(CucumberExecutionContext.java:129)
        at io.cucumber.core.runtime.Runtime.lambda$executePickle$7(Runtime.java:128)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at io.cucumber.core.runtime.Runtime$SameThreadExecutorService.execute(Runtime.java:249)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
        at io.cucumber.core.runtime.Runtime.lambda$runFeatures$3(Runtime.java:110)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
        at java.base/java.util.stream.SliceOps$1$1.accept(SliceOps.java:199)
        at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1632)
        at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
        at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
        at io.cucumber.core.runtime.Runtime.runFeatures(Runtime.java:111)
        at io.cucumber.core.runtime.Runtime.lambda$run$0(Runtime.java:82)
        at io.cucumber.core.runtime.Runtime.execute(Runtime.java:94)
        at io.cucumber.core.runtime.Runtime.run(Runtime.java:80)
        ... 2 more
    Caused by: org.springframework.beans.factory.support.ScopeNotActiveException: Error creating bean with name 'my.project.cucumber.glue.CucumberSpringContextConfiguration': Scope 'cucumber-glue' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is java.lang.IllegalStateException: Scenario scoped beans can only be created while Cucumber is executing a scenario
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:383)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1282)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1243)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:494)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:349)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342)
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1172)
        at io.cucumber.spring.TestContextAdaptor.notifyTestContextManagerAboutAfterTestMethod(TestContextAdaptor.java:120)
        ... 30 more
    Caused by: java.lang.IllegalStateException: Scenario scoped beans can only be created while Cucumber is executing a scenario
        at io.cucumber.spring.CucumberTestContext.requireActiveScenario(CucumberTestContext.java:70)
        at io.cucumber.spring.CucumberTestContext.get(CucumberTestContext.java:48)
        at io.cucumber.spring.CucumberScenarioScope.get(CucumberScenarioScope.java:11)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:371)
        ... 38 more

【问题讨论】:

  • 错误说有两个问题,这个堆栈跟踪只包括一个。另一个是什么?
  • 我不确定 cucumber 是否使用 TestExecutionListeners 即使是 v7.2.3
  • 应该触发测试执行监听器。有 MCVE 吗?
  • 升级到 7.3.4 后,我用新错误更新了我的问题

标签: spring cucumber flyway spring-test cucumber-java


猜你喜欢
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多