【问题标题】:Cucumber framework throwing an error while running testsCucumber 框架在运行测试时抛出错误
【发布时间】:2019-06-10 02:32:57
【问题描述】:

我正在使用 Cucumber 框架来编写我的 ATDD。尝试运行 Cucumber 测试时出现以下错误。

[INFO] Running my.package.RunCukesTests
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.146 s <<< FAILURE! - in my.package.RunCukesTests
[ERROR] initializationError(my.package.RunCukesTests)  Time elapsed: 0.005 s  <<< ERROR!
java.lang.NoClassDefFoundError: io/cucumber/stepexpression/TypeRegistry
Caused by: java.lang.ClassNotFoundException: io.cucumber.stepexpression.TypeRegistry

[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Errors: 
[ERROR]   RunCukesTests.initializationError » NoClassDefFound io/cucumber/stepexpression...
[INFO] 
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

以下是 Cucumber 依赖项:

<properties>
<cucumber.version>3.0.2</cucumber.version>
</properties>
<dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java8</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>info.cukes</groupId>
        <artifactId>cucumber-picocontainer</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>

RunCucksTest.java

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(plugin = { "html:target/test_results/html/TestRunner/cucumber-html-report",
        "json:target/test_results/json/TestRunner-reports.json", "pretty" }, tags = { "" }, features = {
                "src/test/resources/" }, glue = { 
                        "glue/package/steps",
                        "glue/package1/steps" })
public class RunCukesTests {
}

在具有类似异常的线程中搜索时,我发现这可能是由于多个依赖项或使用不同版本不匹配而导致的。但是在这里我使用的是相同的版本,当我使用相同的版本时,我不确定问题出在哪里。

非常感谢任何帮助。提前致谢。

【问题讨论】:

    标签: java cucumber integration-testing cucumber-java atdd


    【解决方案1】:

    关键点: 我们不会混合 info.cukes 和 io.cucumber 依赖项,特别是它们的版本!这样做可能会导致不可预测的结果。

    解决方案:您可能更喜欢下面一组正确的 io.cucumber 依赖项,并根据您的框架需要更新 cucumber v。

     <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>4.2.6</version>
    </dependency>
    
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-picocontainer</artifactId>
        <version>4.2.6</version>
    </dependency>
    

    【讨论】:

    • 看起来 Pico 容器的 4.2.6 版本存在依赖关系。此外,我没有混合版本。 info.cukes 的版本与 io.cucumber 不同
    • 我们不会同时使用 info.cukes 和 io.cucumber 依赖。这是不可取的。
    • 我删除了“info.cukes”依赖项。现在我收到一个新错误:java.lang.NoSuchMethodError: cucumber.runtime.model.CucumberFeature.(Lgherkin/ast/GherkinDocument;Ljava/lang/String;Ljava/lang/String;)V 对此有任何想法请? @社会
    • 希望 picocontainer 来自 io。黄瓜
    【解决方案2】:

    我的配置几乎相同,而且对我来说工作正常。请使用以下依赖项并验证它是否有任何其他问题。

    我的 pom.xml 依赖

           <dependency>
                <groupId>io.cucumber</groupId>
                <artifactId>cucumber-java</artifactId>
                <version>2.4.0</version>
            </dependency>
    
    
         <dependency>
                <groupId>io.cucumber</groupId>
                <artifactId>cucumber-junit</artifactId>
                <version>2.4.0</version>
                <scope>test</scope>
            </dependency>
    
    
          <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-picocontainer</artifactId>
                <version>1.2.5</version>
            </dependency>
    

    现在,如果您使用的是 Cucumber 3,那么您也必须更新 pico 容器版本(2.15)。

    【讨论】:

    • 请确保对所有 Cucumber 依赖项使用相同的版本,以防止任何意外行为。 (在您的示例中,更新 picocontainer 以使用相同的 Cucumber 版本)。另请注意,v2.4.0 已经很老了;检查 Cucumber documentation 的依赖项和最新版本。
    猜你喜欢
    • 2019-11-10
    • 1970-01-01
    • 2012-03-22
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 2016-02-15
    相关资源
    最近更新 更多