功能文件执行时出错:索引10处预期的特定于方案的部分:

时间:2019-03-03 17:03:17

标签: eclipse maven cucumber

在Eclipse中设置自动化环境。 创建一个Maven项目,安装Cucumber插件,指定所有依赖项。 现在,运行功能文件时出现错误。

我应该在Intelij中粘贴步骤定义文件吗?我清除了“胶水”选项中的路径,但它对当前问题没有影响。

Exception in thread "main" java.lang.IllegalArgumentException: Expected scheme-specific part at index 10: classpath:
        at io.cucumber.core.model.GluePath.parseAssumeClasspathScheme(GluePath.java:64)
        at io.cucumber.core.model.GluePath.parse(GluePath.java:34)
        at cucumber.runtime.RuntimeOptions.parse(RuntimeOptions.java:161)
        at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.java:108)
        at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.java:101)
        at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.java:97)
        at cucumber.runtime.Runtime$Builder.withArgs(Runtime.java:131)
        at cucumber.runtime.Runtime$Builder.withArgs(Runtime.java:127)
        at cucumber.api.cli.Main.run(Main.java:22)
        at cucumber.api.cli.Main.main(Main.java:8)
    Caused by: java.net.URISyntaxException: Expected scheme-specific part at index 10: classpath:
        at java.net.URI$Parser.fail(Unknown Source)
        at java.net.URI$Parser.failExpecting(Unknown Source)
        at java.net.URI$Parser.parse(Unknown Source)
        at java.net.URI.<init>(Unknown Source)
        at io.cucumber.core.model.GluePath.parseAssumeClasspathScheme(GluePath.java:62)
        ... 9 more


    Here are all dependencies I added into pom.xml:




          <dependencies>
           <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>4.2.2</version>
            <scope>test</scope>
        </dependency>



        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-core -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>4.2.4</version>
        </dependency>



        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>4.2.4</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-jvm -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-jvm</artifactId>
            <version>4.2.4</version>
            <type>pom</type>
        </dependency>



        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-jvm-deps -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-jvm-deps</artifactId>
            <version>1.0.6</version>
            <scope>provided</scope>
        </dependency>



        <!-- https://mvnrepository.com/artifact/net.masterthought/cucumber-reporting -->
        <dependency>
            <groupId>net.masterthought</groupId>
            <artifactId>cucumber-reporting</artifactId>
            <version>4.5.1</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/info.cukes/gherkin -->
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>gherkin</artifactId>
            <version>2.12.2</version>
            <scope>provided</scope>
        </dependency>



        <!-- https://mvnrepository.com/artifact/org.mockito/mockito-all -->
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>2.0.2-beta</version>
            <scope>test</scope>
        </dependency>

    <!-- https://mvnrepository.com/artifact/org.codehaus.mojo/cobertura-maven-plugin -->
    <dependency>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.7</version>
        <scope>test</scope>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>



    <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>27.0.1-jre</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/com.sun/tools -->
    <dependency>
        <groupId>com.sun</groupId>
        <artifactId>tools</artifactId>
        <version>1.7.0.13</version>
        <scope>system</scope>
        <systemPath>C:\Program Files\Java\jdk1.8.0_201\lib\tools.jar</systemPath>
    </dependency>

1 个答案:

答案 0 :(得分:2)

我使用Eclipse的Cucumber插件遇到了相同的堆栈跟踪。我刚从Cucumber 1.2.5(一切正常)更改为4.2.4。 (注意:我还必须将DataTable的导入从cucumber.api.DataTable更改为io.cucumber.datatable.*。)

发生错误的github page for the code提供了一些线索。

  

粘贴路径可以写为以下包名:{@code com.example.app},    路径{@code com / example / app}或uri {@code classpath:com / example / app}。

基于此文本,我怀疑Cucumber Feature运行器配置中的“ Glue:”字段。默认值为“ classpath:”。当我将其更改为步骤类所在的包名称时,测试便开始了。

我的最佳猜测是,旧版本的Cucumber能够以某种方式接受“ classpath:”作为Glue值,而新版本则不能。