>

오이와 메이븐 프로젝트도 있는데 JUnit을 사용하고 있습니다.

Eclipse에서 프로젝트를 성공적으로 실행하고 빌드 할 수 있습니다.

이 클립이나 오이가 설치되어 있지 않은 다른 시스템의 커맨드 라인에서 테스트를 실행하고 싶습니다. jar에서 JAR을 만들 수 있다는 아이디어가 있습니다. java cli 명령으로 테스트를 실행할 수 있습니다.

아래에서 테스트를 실행하려는 조합은 다음과 같습니다. 또한 pom.xml 및 RunCukesTest.java 파일을 붙여 넣습니다.

pom.xml

<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>pmc</groupId>
    <artifactId>se</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>storeEnabler</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>1.2.4</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.52.0</version>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.11-beta3</version>
        </dependency>
        <dependency>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
            <version>2.8.0</version>
        </dependency>
    </dependencies>
    <build>
        <testResources>
            <testResource>
                <directory>${project.basedir}/src/test/java</directory>
            </testResource>
            <testResource>
                <directory>${project.basedir}/src/test/resource</directory>
            </testResource>
        </testResources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <fork>true</fork>
                        <executable>C:\Program Files\Java\jdk1.8.0_60\bin\javac.exe</executable>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.18</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.surefire</groupId>
                            <artifactId>surefire-junit47</artifactId>
                            <version>2.18</version>
                        </dependency>
                    </dependencies>
                </plugin>
                    <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                            <addClasspath>true</addClasspath>
                                <mainClass>cucumber.api.cli.Main</mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

RunCukesTest.java

package se.stepDefinations;

import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resource/features/Printing.feature:117", plugin = { "pretty",
        "html:target/cucumber-html-report" }, glue = { "se.stepDefinations" }, tags = {})
public class RunCukesTest {
    public static void main(String[] args) throws Exception {

    }
}

  • JUNIT Jar를 클래스 경로에 추가했습니다.

2 가지 방법으로 항아리를 생성하고 있습니다

1)->Project->Export->JAR 파일을 사용하여 JAR 내보내기  마지막 단계에서 MAIN 클래스 선택 : RunCukesTest : 진입 점에 대한 주요 메소드를 여기에서 정의 했으므로 (이 클래스에서이 메인 메소드가 필요합니까 ???)

내 보낸 후 아래 명령을 실행하고 있습니다.

1.1 java -jar xyz.jar   오류가 발생합니다 : NoClassDef를 찾았습니다 : org/junit/runner/JUnitCore

따라서이 방법으로 실행했습니다 :

1.2 java -cp xyz.jar;junit-4.12.jar org.junit.runner.JUnitCore   말 했어요

JUnit version 4.12
Time:0.001
OK(0 tests)

여전히 작동하지 않았으므로 마지막에 RunCukesTest 파일 네임 스페이스를 추가했습니다.
1.3 java -cp xyz.jar;junit-4.12.jar org.junit.runner.JUnitCore se.stepDefinations.RunCukesTest
 나에게 오류가 발생했습니다 : cucumber.api.junit.Cucumber not present

2) 그래서 jar 내보내기 옵션을 포기했으며 이제 maven Build에서 JAR을 사용하려고합니다. Maven Build로 실행할 POM을 선택하고 대상 폴더에 2 개의 jar을 생성했습니다.

와이즈 비즈

1) 나는 의존성을 가지고 더 큰 파일을 실행했다

1 with name xyz-0.0.1-SNAPSHOT with 16kb another with 2nd with
xyz-0.0.1-SNAPSHOT-jar-with-dependencies with 33mb

나에게 메시지를 주었다 :

와이즈 비즈

2) 그래서 네임 스페이스를 RunCukesTest 파일에 추가하려고 시도했습니다.

java -jar xyz-0.0.1-SNAPSHOT-jar-with-dependencies.jar

와이즈 비즈

물론 오류가 말했듯이 대상 폴더에서 기능을 찾으려고합니다.

다시 실행 파일과 같은 다른 컴퓨터에서 이러한 프로젝트 파일 종속성과 독립적으로 JAR을 실행하고 싶습니다.

도움이 될 것입니다. 감사합니다.

Got no path to feature directory

  • 답변 # 1

    당신이 생각하는 문제를 두 부분으로 나눌 것입니다.

    실행 가능한 jar 생성

    나만의 주요 방법으로 오이를 실행

    Maven을 사용하여 실행 가능한 jar 작성은 다른 방법으로 수행 할 수 있습니다. 이를 수행하는 한 가지 방법이 여기에 설명되어 있습니다. http://www.thinkcode.se/blog/2011/03/05/create-an- executable-jar-from-maven

    이것은 다음과 같은 명령 행에서 무언가를 실행하는 것에 초점을 맞춘 작은 예입니다 :

    java -jar executable-example.jar

    이 예에는 모든 종속성이 포함되어 있습니다. 그들은 모두 같은 항아리에 묶여 있습니다. 추가 병이 필요 없습니다.

    다음 단계는 메인 메소드에서 Cucumber를 실행하는 것입니다. 내 접근 방식은 Cucumber의 명령 줄 버전에 사용되는 Cucumber 기본 방법을 실행하는 main을 작성하는 것입니다. 커맨드 라인에서 오이를 운영하는 데 사용되는 주요 방법은 cucumber-java 에 있습니다.  도서관. cucumber.api.cli.Main 에서 찾을 수 있습니다

    다른 메인 메소드에서 메인 메소드를 실행하는 방법은 다음과 같습니다 :

    public static void main(String[] args) throws Throwable {
        String[] arguments = {"foo", "bar"};
        cucumber.api.cli.Main.main(arguments);
    }
    
    

    여기서 arguments는 항상 Cucumber를 실행하려는 명령 줄 인수입니다.

    이 두 단계를 수행하면 jar를 실행할 수있는 곳이라면 어디든지 자신의 실행 가능한 jar에서 Cucumber를 실행할 수 있어야합니다.

    폼에서 Cucumber 용 라이브러리 버전을 믹싱하고 있음에 유의하십시오. 모든 라이브러리의 최신 버전을 사용합니다. cucumber-java 비교 cucumber-testng  그리고 cucumber-junit . 최신 Cucumber 버전은 1.2.4입니다. 나는 그들 모두를 위해 그것을 사용할 것입니다.

    명령 줄에서 Cucumber를 실행하는 방법에 대한 자세한 내용은 https://cucumber.io/docs/cucumber/api/#from-the-command-line

  • 답변 # 2

    @SpringBootApplication
    public class Application {
        public static void main(final String[] args) throws Throwable {
            // SpringApplication.run(TestApplication.class, args);
            JUnitCore.main(CucumberTest.class.getCanonicalName());
        }
    }
    를 참조하십시오.
    

관련 자료

  • 이전 Javascript가 PHP에서 이러한 변수를 객체로 제공하는 이유는 무엇입니까?
  • 다음 Python 3에서 LaTeX 수학 문자열 형식화