微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Cucumber - 即使所有依赖项都使用相同的版本,也没有找到后端

如何解决Cucumber - 即使所有依赖项都使用相同的版本,也没有找到后端

我正在尝试运行黄瓜 feature 文件 -

String [] argv = new String[]{ "-g","","path/to/features"};
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
io.cucumber.core.cli.Main.run(argv,classLoader);

我把我所有的黄瓜依赖版本都像-

<properties>
   <cucumber.version>6.10.3</cucumber.version> 
   <junit.version>4.13</junit.version> 
</properties>

和匹配的依赖项-

          <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>${cucumber.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>${cucumber.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>${cucumber.version}</version>
            <scope>compile</scope>
        </dependency>

但我仍然得到 -

io.cucumber.core.exception.CucumberException: No backends were found. Please make sure you have a backend module on your CLAsspATH.

我已经在 SO 上尝试了所有其他答案,完全错误 -

io.cucumber.core.exception.CucumberException: io.cucumber.core.exception.CucumberException: No backends were found. Please make sure you have a backend module on your CLAsspATH.
    at io.cucumber.core.runtime.CucumberExecutionContext.getException(CucumberExecutionContext.java:82) ~[cucumber-core-6.10.3.jar:6.10.3]
    at io.cucumber.core.runtime.Runtime.run(Runtime.java:103) ~[cucumber-core-6.10.3.jar:6.10.3]
    at io.cucumber.core.cli.Main.run(Main.java:92) ~[cucumber-core-6.10.3.jar:6.10.3]
    at com.capitolos.system.test.services.TestRunnerService.run(TestRunnerService.java:49) ~[classes/:?]
    at com.capitolos.system.test.services.TestRunnerService.runFeatureTest(TestRunnerService.java:26) [classes/:?]
    at com.capitolos.system.test.controllers.RunTestsController.runTest(RunTestsController.java:22) [classes/:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
    at org.springframework.web.method.support.invocableHandlerMethod.doInvoke(invocableHandlerMethod.java:190) [spring-web-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:138) [spring-web-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:105) [spring-webmvc-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) [spring-webmvc-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) [spring-webmvc-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) [spring-webmvc-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:1040) [spring-webmvc-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:943) [spring-webmvc-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) [spring-webmvc-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:497) [jakarta.servlet-api-4.0.4.jar:4.0.4]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:584) [jakarta.servlet-api-4.0.4.jar:4.0.4]
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) [spring-web-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) [spring-web-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at org.springframework.boot.actuate.metrics.web.servlet.WebMvcmetricsFilter.doFilterInternal(WebMvcmetricsFilter.java:93) [spring-boot-actuator-2.3.10.RELEASE.jar:2.3.10.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) [spring-web-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.14.RELEASE.jar:5.2.14.RELEASE]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.ServletdispatchingHandler.handleRequest(ServletdispatchingHandler.java:36) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.security.SSLinformationAssociationHandler.handleRequest(SSLinformationAssociationHandler.java:111) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) [undertow-core-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) [undertow-core-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) [undertow-core-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.SessionRestoringHandler.handleRequest(SessionRestoringHandler.java:119) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.ServletinitialHandler.handleFirstRequest(ServletinitialHandler.java:269) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.ServletinitialHandler.access$100(ServletinitialHandler.java:78) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.ServletinitialHandler$2.call(ServletinitialHandler.java:133) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.ServletinitialHandler$2.call(ServletinitialHandler.java:130) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.ServletinitialHandler.dispatchRequest(ServletinitialHandler.java:249) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.ServletinitialHandler.access$000(ServletinitialHandler.java:78) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.servlet.handlers.ServletinitialHandler$1.handleRequest(ServletinitialHandler.java:99) [undertow-servlet-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:390) [undertow-core-2.1.7.Final.jar:2.1.7.Final]
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:836) [undertow-core-2.1.7.Final.jar:2.1.7.Final]
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) [jboss-threads-3.1.0.Final.jar:3.1.0.Final]
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019) [jboss-threads-3.1.0.Final.jar:3.1.0.Final]
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558) [jboss-threads-3.1.0.Final.jar:3.1.0.Final]
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449) [jboss-threads-3.1.0.Final.jar:3.1.0.Final]
    at java.lang.Thread.run(Thread.java:832) [?:?]
Caused by: io.cucumber.core.exception.CucumberException: No backends were found. Please make sure you have a backend module on your CLAsspATH.
    at io.cucumber.core.runtime.BackendServiceLoader.get(BackendServiceLoader.java:39) ~[cucumber-core-6.10.3.jar:6.10.3]
    at io.cucumber.core.runtime.BackendServiceLoader.get(BackendServiceLoader.java:33) ~[cucumber-core-6.10.3.jar:6.10.3]
    at io.cucumber.core.runtime.SingletonRunnersupplier.createRunner(SingletonRunnersupplier.java:45) ~[cucumber-core-6.10.3.jar:6.10.3]
    at io.cucumber.core.runtime.SingletonRunnersupplier.get(SingletonRunnersupplier.java:37) ~[cucumber-core-6.10.3.jar:6.10.3]
    at io.cucumber.core.runtime.CucumberExecutionContext.getRunner(CucumberExecutionContext.java:128) ~[cucumber-core-6.10.3.jar:6.10.3]
    at io.cucumber.core.runtime.CucumberExecutionContext.runTestCase(CucumberExecutionContext.java:115) ~[cucumber-core-6.10.3.jar:6.10.3]
    at io.cucumber.core.runtime.Runtime.lambda$execute$6(Runtime.java:110) ~[cucumber-core-6.10.3.jar:6.10.3]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
    at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
    at io.cucumber.core.runtime.Runtime$SameThreadExecutorService.execute(Runtime.java:233) ~[cucumber-core-6.10.3.jar:6.10.3]
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118) ~[?:?]
    at io.cucumber.core.runtime.Runtime.lambda$run$2(Runtime.java:86) ~[cucumber-core-6.10.3.jar:6.10.3]
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
    at java.util.stream.SliceOps$1$1.accept(SliceOps.java:199) ~[?:?]
    at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) ~[?:?]
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127) ~[?:?]
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502) ~[?:?]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488) ~[?:?]
    at java.util.stream.AbstractPipeline.wrapAndcopyInto(AbstractPipeline.java:474) ~[?:?]
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[?:?]
    at io.cucumber.core.runtime.Runtime.run(Runtime.java:87) ~[cucumber-core-6.10.3.jar:6.10.3]

解决方法

我通过从所有依赖项中删除 scope 解决了这个问题-

      <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>${cucumber.version}</version>
    </dependency>

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>${cucumber.version}</version>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-core</artifactId>
        <version>6.8.0</version>
    </dependency>

原因是在运行时可以使用这个 jars - https://www.baeldung.com/maven-dependency-scopes

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。