【问题标题】:How can I run Cucumber Test runner from CLI without using Maven如何在不使用 Maven 的情况下从 CLI 运行 Cucumber Test runner
【发布时间】:2022-08-20 02:43:27
【问题描述】:

我看过帖子——

How to run cucumber file from command line

Cucumber java project without maven - how to run from command prompt if i am having Runner class

但是那里给出的解决方案不是很清楚。

我的 CucumberRunner.java 看起来像 -

@RunWith(Cucumber.class)
@CucumberOptions(
        features = \"src/test/resources/features\",
        tags=\"@Regression\",
        monochrome = false,
        plugin = {\"pretty\",
                \"com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:\",
                \"timeline:test-output-thread/\",
                \"json:target/cucumber-reports/jsonReports/Cucumber.json\",
                \"html:target/cucumber-reports/Cucumber.html\"}
      
)


public class CucumberRunner {

   
}

不幸的是,由于安全原因,我无法在 Linux 机器上安装 maven。所以我想从 CLI 运行这个 CucumberRunner 文件。

正如我在之前的帖子中所建议的那样,我在 Cucumber 课程中尝试过

public class CucumberRunner {

    public static void main(String[] args){
        Main.main(new String[]{\"-g\", \"src/test/java/stepdefinitions\", \"src/test/resources/features/Validate.feature\"});
    }

}

但这给了我例外

Exception in thread \"main\" java.lang.NoClassDefFoundError: io/cucumber/core/cli/Main
        at CucumberRunner.main(CucumberRunner.java:29)                              
Caused by: java.lang.ClassNotFoundException: io.cucumber.core.cli.Main              
        at java.net.URLClassLoader.findClass(URLClassLoader.java:387)               
        at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
        ... 1 more

但这也没有给出任何基于 Cucumber 标签运行的解决方案。

任何解决方案或指针表示赞赏。

亲切的问候,

阿比

    标签: java cucumber cucumber-java


    【解决方案1】:

    为了运行 Java 应用程序,您需要能够在运行时解析所有依赖项。这意味着,POM 上依赖项标记下引用的每个库都必须位于运行 Selenium (Cucumber) 的机器中的某个位置。同样,如果这些库有它们自己的依赖项,您还必须将它们下载到机器的某个位置。

    您有几个选择来访问依赖库。您需要将所有依赖项作为外部 JAR(位于应用程序 JAR 之外)引用,或者您需要将它们打包到应用程序 JAR 中。您可以使用像 ANT 这样的构建工具来构建您的 JAR 并映射您的依赖项,类似于在 Maven 中完成的方式。显然不同之处在于您需要执行我之前描述的操作(您的构建工具需要知道这些 JAR 的物理位置)。

    要执行,您显然需要一个 main 方法。因为这是使用 Selenium (Cucumber),所以您的 Runner 类由 JUnit 或 TestNG 运行(取决于您使用的是什么)。之后,剩下的就看你自己了。例如,您可以简单地创建一个批处理文件来启动您的应用程序,或者您可以使用像 Launch4J 这样的工具来创建一个可执行文件。当然,后者需要创建一个可执行的 JAR。

    【讨论】:

      【解决方案2】:

      @abhi 问题解决了吗?如果是,请在此处分享解决问题的步骤。 提前致谢

      【讨论】:

        猜你喜欢
        • 2019-09-07
        • 1970-01-01
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多