簡體   English   中英

Cucumber 運行測試:線程“main”中的異常 java.util.NoSuchElementException

[英]Cucumber run test: Exception in thread "main" java.util.NoSuchElementException

嗨,我正在嘗試使用 cucumber 運行測試,但是當我嘗試使用 IntellJ 運行任何測試時,顯示此錯誤:

Exception in thread "main" java.util.NoSuchElementException
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:1000)
    at java.base/java.util.Collections.max(Collections.java:713)
    at io.cucumber.core.feature.FeatureParser.parseResource(FeatureParser.java:46)
    at java.base/java.util.function.BiFunction.lambda$andThen$0(BiFunction.java:70)

我的 POM:

<dependency>
      <groupId>io.cucumber</groupId>
      <artifactId>messages</artifactId>
      <version>21.0.1</version>
    </dependency>
    <dependency>
      <groupId>io.cucumber</groupId>
      <artifactId>cucumber-spring</artifactId>
      <version>${cucumber.version}</version>
      <exclusions>
        <exclusion>
          <groupId>io.cucumber</groupId>
          <artifactId>messages</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.cucumber</groupId>
          <artifactId>cucumber-gherkin-messages</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>io.cucumber</groupId>
      <artifactId>cucumber-junit</artifactId>
      <version>${cucumber.version}</version>
      <exclusions>
        <exclusion>
          <groupId>io.cucumber</groupId>
          <artifactId>cucumber-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.cucumber</groupId>
          <artifactId>messages</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <artifactId>cucumber-java</artifactId>
      <groupId>io.cucumber</groupId>
      <exclusions>
        <exclusion>
          <groupId>io.cucumber</groupId>
          <artifactId>cucumber-gherkin</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.cucumber</groupId>
          <artifactId>messages</artifactId>
        </exclusion>
      </exclusions>
      <version>${cucumber.version}</version>
    </dependency>

如果有人能幫助我,我真的很感激

您的依賴項不一致。 您明確排除了 Cucumber 的傳遞依賴項並明確包括其他項。 你不應該那樣做,Cucumber 需要那些到 function。

我強烈建議您花時間學習如何在表面上使用 Maven(或 Gradle)。 了解這些工具和所涉及的概念可以讓您的生活更輕松。

例如:

如果您想將 Cucumber 與 JUnit 5 和基於注解的步驟定義一起使用,您可以在 Maven pom.xml文件中聲明這一最小依賴集。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.junit</groupId>
            <artifactId>junit-bom</artifactId>
            <version>5.9.1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-bom</artifactId>
            <version>7.10.1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit-platform-engine</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-suite</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <scope>test</scope>
    </dependency>

</dependencies>

通過告訴 Maven 你的依賴是什么 Maven 可以計算出你的傳遞依賴,即:你的依賴的依賴。

這有很多優點。 一個示例是使用mvn dependency:tree -Dverbose命令列出所有依賴項及其傳遞依賴項。

$ mvn dependency:tree -Dverbose
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------< cucumber:cucumber-java-skeleton >-------------------
[INFO] Building Cucumber-Java Skeleton 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ cucumber-java-skeleton ---
[INFO] cucumber:cucumber-java-skeleton:jar:0.0.1
[INFO] +- io.cucumber:cucumber-java:jar:7.10.1:test
[INFO] |  +- io.cucumber:cucumber-core:jar:7.10.1:test
[INFO] |  |  +- io.cucumber:cucumber-gherkin:jar:7.10.1:test
[INFO] |  |  |  \- (io.cucumber:cucumber-plugin:jar:7.10.1:test - omitted for duplicate)
[INFO] |  |  +- io.cucumber:cucumber-gherkin-messages:jar:7.10.1:test
[INFO] |  |  |  +- io.cucumber:gherkin:jar:25.0.2:test
[INFO] |  |  |  |  \- (io.cucumber:messages:jar:19.1.4:test - omitted for duplicate)
[INFO] |  |  |  \- (io.cucumber:cucumber-gherkin:jar:7.10.1:test - omitted for duplicate)
[INFO] |  |  +- io.cucumber:messages:jar:19.1.4:test
[INFO] |  |  +- io.cucumber:tag-expressions:jar:4.1.0:test
[INFO] |  |  +- io.cucumber:cucumber-expressions:jar:16.1.1:test
[INFO] |  |  |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |  |  +- io.cucumber:datatable:jar:7.10.1:test
[INFO] |  |  |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |  |  +- io.cucumber:cucumber-plugin:jar:7.10.1:test
[INFO] |  |  |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |  |  +- io.cucumber:docstring:jar:7.10.1:test
[INFO] |  |  |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |  |  +- io.cucumber:html-formatter:jar:20.2.0:test
[INFO] |  |  |  \- (io.cucumber:messages:jar:19.1.4:test - omitted for duplicate)
[INFO] |  |  +- io.cucumber:ci-environment:jar:9.1.0:test
[INFO] |  |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |  \- org.apiguardian:apiguardian-api:jar:1.1.2:test
[INFO] +- io.cucumber:cucumber-junit-platform-engine:jar:7.10.1:test
[INFO] |  +- (io.cucumber:cucumber-core:jar:7.10.1:test - omitted for duplicate)
[INFO] |  \- org.junit.platform:junit-platform-engine:jar:1.9.1:test
[INFO] |     +- org.opentest4j:opentest4j:jar:1.2.0:test
[INFO] |     +- org.junit.platform:junit-platform-commons:jar:1.9.1:test
[INFO] |     |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |     \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] +- org.junit.platform:junit-platform-suite:jar:1.9.1:test
[INFO] |  +- org.junit.platform:junit-platform-suite-api:jar:1.9.1:test
[INFO] |  |  +- (org.junit.platform:junit-platform-commons:jar:1.9.1:test - omitted for duplicate)
[INFO] |  |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |  \- org.junit.platform:junit-platform-suite-engine:jar:1.9.1:test
[INFO] |     +- (org.junit.platform:junit-platform-engine:jar:1.9.1:test - omitted for duplicate)
[INFO] |     +- (org.junit.platform:junit-platform-suite-api:jar:1.9.1:test - omitted for duplicate)
[INFO] |     +- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |     \- org.junit.platform:junit-platform-suite-commons:jar:1.9.1:test
[INFO] |        +- org.junit.platform:junit-platform-launcher:jar:1.9.1:test
[INFO] |        |  +- (org.junit.platform:junit-platform-engine:jar:1.9.1:test - omitted for duplicate)
[INFO] |        |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |        +- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |        +- (org.junit.platform:junit-platform-engine:jar:1.9.1:test - omitted for duplicate)
[INFO] |        \- (org.junit.platform:junit-platform-suite-api:jar:1.9.1:test - omitted for duplicate)
[INFO] \- org.junit.jupiter:junit-jupiter:jar:5.9.1:test
[INFO]    +- org.junit.jupiter:junit-jupiter-api:jar:5.9.1:test
[INFO]    |  +- (org.opentest4j:opentest4j:jar:1.2.0:test - omitted for duplicate)
[INFO]    |  +- (org.junit.platform:junit-platform-commons:jar:1.9.1:test - omitted for duplicate)
[INFO]    |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO]    +- org.junit.jupiter:junit-jupiter-params:jar:5.9.1:test
[INFO]    |  +- (org.junit.jupiter:junit-jupiter-api:jar:5.9.1:test - omitted for duplicate)
[INFO]    |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO]    \- org.junit.jupiter:junit-jupiter-engine:jar:5.9.1:test
[INFO]       +- (org.junit.platform:junit-platform-engine:jar:1.9.1:test - omitted for duplicate)
[INFO]       +- (org.junit.jupiter:junit-jupiter-api:jar:5.9.1:test - omitted for duplicate)
[INFO]       \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.933 s
[INFO] Finished at: 2022-12-28T16:33:23+01:00
[INFO] ------------------------------------------------------------------------

注意:如果您看到傳遞依賴項被列為“因重復而省略”,並且您也已將其包含在pom.xml中,則不需要此包含。 Maven為您下載。

此外,如果您希望重新開始,您還可以使用cucumber-java-skeleton開始一個工作項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM