簡體   English   中英

試圖實現 cucumber.api.cli.Main.main()

[英]Trying to implement cucumber.api.cli.Main.main()

我嘗試實現'cucumber.api.cli.Main',但出現以下錯誤:“未找到后端。請確保您的 CLASSPATH 上有后端模塊。” 這是否意味着我缺少依賴項? 我的 Gradle 和 java 代碼如下。


java代碼

package cucumber;

import cucumber.api.cli.Main;

import java.io.PrintStream;

public class CucumberRunEngine {
    public static void main(String[] args) {
    try {
            Main.main(
                    new String[]{
                            "CLASSPATH:src.main.groovy.cucumber.features.addDeal",
                            //"-t", "@Daily",
                            "-g", "cucumber.stepDefinitions",
                            "-p", "pretty",
                            "-p", "html:target/HTMLReports/report.html",
                            "-p", "junit:target/JUNITReports/report.xml",
                            "-p", "json:target/JSONReports/report.json",
                            "-m"
                    }
            );
        } catch (Exception e) {
            PrintStream printer =System.out;
            printer.println(e);
            for (int element=0;element<e.getStackTrace().length;element++) {
                printer.println(e.getStackTrace()[element]);
            }
       }
    }
}

Gradle代碼

plugins {
    id 'groovy'
    id 'java-library'
    id 'application'
    id "se.thinkcode.cucumber-runner" version "0.0.8"
}

dependencies {
    //Standard
    api "org.codehaus.groovy:groovy-all:${groovyVersion}"
    api "com.reuters:corejavalib:${coreJavaLibVersion}"
    api "com.oracle:ojdbc7:${ojdbc7Version}"

    implementation "commons-io:commons-io:${commonsIoVersion}"
    implementation "commons-lang:commons-lang:${commonLangVersion}"

    //JUnit
    implementation "junit:junit:${jUnitVersion}"
//    implementation("org.junit.platform:junit-platform-suite")
    compileOnly "org.testng:testng:${testNGVersion}"

    //Cucumber
    compileOnly "io.cucumber:cucumber-java:${cucumberVersion}"
    compileOnly "io.cucumber:cucumber-java8:${cucumberVersion}"
    compileOnly "io.cucumber:cucumber-junit:${cucumberVersion}"
    compileOnly "io.cucumber:cucumber-groovy:${cucumberGroovyVersion}"
    compileOnly "io.cucumber:cucumber-gherkin:${cucumberVersion}"
    compileOnly "io.cucumber:cucumber-jvm-groovy:${cucumberGroovyVersion}"
    compileOnly "io.cucumber:cucumber-junit-platform-engine:${cucumberVersion}"
    implementation "io.cucumber:cucumber-core:${cucumberVersion}"


}
application{
    mainClass="cucumber.CucumberRunEngine"
}

repositories {
}

Gradle.properties

# versions of dependencies used in this project defined here
groovyVersion=2.5.7

commonCliVersion=1.3.1
commonsIoVersion=2.6
commonLangVersion=2.6

#JUnit
jUnitVersion=4.8
testNGVersion=7.4.0
jUnitPlatformSuiteVersion=1.9.0

#Cucumber
cucumberVersion=7.4.0
cucumberGroovyVersion=6.10.4

ojdbc7Version=12.1.0.2
coreJavaLibVersion=3.5.21.9

感謝您提前提供任何幫助:)

您的項目設置有點奇怪。 有太多的部分根本不屬於。 例如,由於使用compileOnly ,您沒有包含運行時所需的代碼。 所以 Cucumber 抱怨它找不到cucumber-java (后端)。

現在您可能已經注意到了這一點,並因此將cucumber-core的范圍限定為implementation 但這表明您一次修復一個錯誤,而不是對您使用的工具有基本的了解。

所以值得一讀 Gradle 如何為您進行依賴管理:

https://docs.gradle.org/5.3.1/userguide/java_plugin.html#sec:java_plugin_and_dependency_management

在骨架項目中可以找到一個最小的示例。 它不是根據您的需求量身定制的,但它應該是一個很好的起點。

https://github.com/cucumber/cucumber-java-skeleton

plugins {
    java
}
dependencies {
    testImplementation(platform("org.junit:junit-bom:5.9.0"))
    testImplementation(platform("io.cucumber:cucumber-bom:7.6.0"))

    testImplementation("io.cucumber:cucumber-java")
    testImplementation("io.cucumber:cucumber-junit-platform-engine")
    testImplementation("org.junit.platform:junit-platform-suite")
    testImplementation("org.junit.jupiter:junit-jupiter")
}

repositories {
    mavenLocal()
    mavenCentral()
}

tasks.withType<Test> {
    useJUnitPlatform()
    // Work around. Gradle does not include enough information to disambiguate
    // between different examples and scenarios.
    systemProperty("cucumber.junit-platform.naming-strategy", "long")
}

暫無
暫無

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

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