Java 如何在没有主方法的情况下将cucumber测试转换为exe文件

Java 如何在没有主方法的情况下将cucumber测试转换为exe文件,java,maven,selenium,cucumber,Java,Maven,Selenium,Cucumber,我通过功能文件或runner类运行测试。我无法创建Jar,因为我的项目中没有main方法。请让我知道如何创建一个jar文件使用这个或如果我需要添加任何东西 This is my POM.xml from the project : <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schem

我通过功能文件或runner类运行测试。我无法创建Jar,因为我的项目中没有main方法。请让我知道如何创建一个jar文件使用这个或如果我需要添加任何东西

    This is my POM.xml from the project :

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

        <groupId>com.cucumber</groupId>
        <artifactId>BasePolicy</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>

        <name>BasePolicy</name>
        <url>http://maven.apache.org</url>

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-java</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-picocontainer</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-junit</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>jdom</groupId>
                <artifactId>jdom</artifactId>
                <version>1.1</version>
            </dependency>
        </dependencies>

    </project>

    --------------------------------------------------------------------
    and My java runner class : 

    package com.cucumber.testcases;

    import java.io.File;
    import java.util.concurrent.TimeUnit;

    import org.junit.Before;
    import org.junit.runner.RunWith;
    import org.openqa.selenium.phantomjs.PhantomJSDriver;

    import com.cucumber.Base.BaseDriver;

    import cucumber.api.CucumberOptions;

    import cucumber.api.junit.Cucumber;

    @RunWith(Cucumber.class)
    @CucumberOptions(
            // format = {"pretty","html:target/html/" } ,
            features = "src/test/java")
    public class RunnerClass {

        }
我希望在服务器中执行功能场景,以便实现我希望创建当前项目的exe(Cucumber使用selenium webdriver,Java使用EclipseIDE和Maven作为构建工具),但由于我的项目中没有主方法,所以无法创建。请让我知道如何使用这个创建一个jar文件,或者如果我需要添加任何其他插件,以及如何在这里添加main方法

    This is my POM.xml from the project :

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

        <groupId>com.cucumber</groupId>
        <artifactId>BasePolicy</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>

        <name>BasePolicy</name>
        <url>http://maven.apache.org</url>

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-java</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-picocontainer</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-junit</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>jdom</groupId>
                <artifactId>jdom</artifactId>
                <version>1.1</version>
            </dependency>
        </dependencies>

    </project>

    --------------------------------------------------------------------
    and My java runner class : 

    package com.cucumber.testcases;

    import java.io.File;
    import java.util.concurrent.TimeUnit;

    import org.junit.Before;
    import org.junit.runner.RunWith;
    import org.openqa.selenium.phantomjs.PhantomJSDriver;

    import com.cucumber.Base.BaseDriver;

    import cucumber.api.CucumberOptions;

    import cucumber.api.junit.Cucumber;

    @RunWith(Cucumber.class)
    @CucumberOptions(
            // format = {"pretty","html:target/html/" } ,
            features = "src/test/java")
    public class RunnerClass {

        }
这是项目中的my POM.xml:
4.0.0
黄瓜
基本政策
0.0.1-快照
罐子
基本政策
http://maven.apache.org
UTF-8
朱尼特
朱尼特
4.11
测试
信息杯
黄瓜爪哇
1.2.5
测试
信息杯
黄瓜皮容器
1.2.5
测试
信息杯
黄瓜刺柏
1.2.5
测试
Java文档对象模型
Java文档对象模型
1.1
--------------------------------------------------------------------
和我的java runner类:
包com.cumber.testcases;
导入java.io.File;
导入java.util.concurrent.TimeUnit;
导入org.junit.Before;
导入org.junit.runner.RunWith;
导入org.openqa.selenium.phantomjs.PhantomJSDriver;
导入com.cumber.Base.BaseDriver;
进口cucumber.api.CucumberOptions;
进口cucumber.api.junit.cucumber;
@RunWith(cumber.class)
@黄瓜选项(
//format={“pretty”,“html:target/html/”},
features=“src/test/java”)
公共类RunnerClass{
}

您可以通过调用main.class的
静态main方法创建一个main方法来运行cucumber(一句话中有很多main)

    This is my POM.xml from the project :

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

        <groupId>com.cucumber</groupId>
        <artifactId>BasePolicy</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>

        <name>BasePolicy</name>
        <url>http://maven.apache.org</url>

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-java</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-picocontainer</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-junit</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>jdom</groupId>
                <artifactId>jdom</artifactId>
                <version>1.1</version>
            </dependency>
        </dependencies>

    </project>

    --------------------------------------------------------------------
    and My java runner class : 

    package com.cucumber.testcases;

    import java.io.File;
    import java.util.concurrent.TimeUnit;

    import org.junit.Before;
    import org.junit.runner.RunWith;
    import org.openqa.selenium.phantomjs.PhantomJSDriver;

    import com.cucumber.Base.BaseDriver;

    import cucumber.api.CucumberOptions;

    import cucumber.api.junit.Cucumber;

    @RunWith(Cucumber.class)
    @CucumberOptions(
            // format = {"pretty","html:target/html/" } ,
            features = "src/test/java")
    public class RunnerClass {

        }
创建一个新类并向其添加以下主方法

    This is my POM.xml from the project :

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

        <groupId>com.cucumber</groupId>
        <artifactId>BasePolicy</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>

        <name>BasePolicy</name>
        <url>http://maven.apache.org</url>

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-java</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-picocontainer</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-junit</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>jdom</groupId>
                <artifactId>jdom</artifactId>
                <version>1.1</version>
            </dependency>
        </dependencies>

    </project>

    --------------------------------------------------------------------
    and My java runner class : 

    package com.cucumber.testcases;

    import java.io.File;
    import java.util.concurrent.TimeUnit;

    import org.junit.Before;
    import org.junit.runner.RunWith;
    import org.openqa.selenium.phantomjs.PhantomJSDriver;

    import com.cucumber.Base.BaseDriver;

    import cucumber.api.CucumberOptions;

    import cucumber.api.junit.Cucumber;

    @RunWith(Cucumber.class)
    @CucumberOptions(
            // format = {"pretty","html:target/html/" } ,
            features = "src/test/java")
    public class RunnerClass {

        }
public static void main(String[] args) throws Throwable {

            Main.main(new String[]{"-g", "classpath to step definition file", "Full path to feature file"});

          // My stepdefinition is inside java package at cucumber.sample.test
          // My feature file is inside src/test/resources/features/sample.feature

        }
对于标签或插件等其他参数,请使用
“-t”,“@tags”
重要信息功能文件路径必须是最后一个选项。

    This is my POM.xml from the project :

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

        <groupId>com.cucumber</groupId>
        <artifactId>BasePolicy</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>

        <name>BasePolicy</name>
        <url>http://maven.apache.org</url>

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-java</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-picocontainer</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-junit</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>jdom</groupId>
                <artifactId>jdom</artifactId>
                <version>1.1</version>
            </dependency>
        </dependencies>

    </project>

    --------------------------------------------------------------------
    and My java runner class : 

    package com.cucumber.testcases;

    import java.io.File;
    import java.util.concurrent.TimeUnit;

    import org.junit.Before;
    import org.junit.runner.RunWith;
    import org.openqa.selenium.phantomjs.PhantomJSDriver;

    import com.cucumber.Base.BaseDriver;

    import cucumber.api.CucumberOptions;

    import cucumber.api.junit.Cucumber;

    @RunWith(Cucumber.class)
    @CucumberOptions(
            // format = {"pretty","html:target/html/" } ,
            features = "src/test/java")
    public class RunnerClass {

        }

通过在运行该类时将这些参数传递给该类,可以对其进行进一步配置,使其更加灵活。您需要在代码中使用args参数。

我创建了类文件,如下所示,它运行良好,但在转换为Jar文件时,它根本不运行,我还添加了依赖Jar。请告诉我可以做什么。public类NewMain{public static void main(String[]args)抛出Throwable{main.main(new String[]{“-g”,“com.cumber.testcases”,“src/com/cumber/Features/PolicyFeatures.feature”};}您得到的异常是什么?没有得到任何异常。它在eclipse中可以正常工作,但在创建jar时,不会启动测试用例。您的类路径可能有问题,或者找不到功能文件。
    This is my POM.xml from the project :

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

        <groupId>com.cucumber</groupId>
        <artifactId>BasePolicy</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>

        <name>BasePolicy</name>
        <url>http://maven.apache.org</url>

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-java</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-picocontainer</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-junit</artifactId>
                <version>1.2.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>jdom</groupId>
                <artifactId>jdom</artifactId>
                <version>1.1</version>
            </dependency>
        </dependencies>

    </project>

    --------------------------------------------------------------------
    and My java runner class : 

    package com.cucumber.testcases;

    import java.io.File;
    import java.util.concurrent.TimeUnit;

    import org.junit.Before;
    import org.junit.runner.RunWith;
    import org.openqa.selenium.phantomjs.PhantomJSDriver;

    import com.cucumber.Base.BaseDriver;

    import cucumber.api.CucumberOptions;

    import cucumber.api.junit.Cucumber;

    @RunWith(Cucumber.class)
    @CucumberOptions(
            // format = {"pretty","html:target/html/" } ,
            features = "src/test/java")
    public class RunnerClass {

        }