【发布时间】: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