web-dev-qa-db-ja.com

コマンドプロンプトおよびMavenを使用したジェンキンを通じて単一のキュウリ機能ファイルを実行する方法

私はCucumber/Mavenに少し慣れていないので、テストケースの実行に関するヘルプが必要です。私は、CucumberとSeleniumを使用してEclipseで自動化スイートを開発しました。特定の機能ファイル/ Junitランナークラスを実行するには、Eclipseでファイルを右クリックして実行します。

しかし、50個の機能ファイルまたはJUnitクラスから2-3個の機能ファイル(または)2-3個のJunitランナークラスを実行する特定のコマンドを指定して、コマンドプロンプトまたはJenkinsで実行するにはどうすればよいですか?

以下は、私がEclipseでどのように構造化したかを示すパッケージエクスプローラーです。

enter image description here

以下は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>com.perspecsys</groupId>
    <artifactId>salesforce</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>salesforce</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.1.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-picocontainer</artifactId>
            <version>1.1.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>1.1.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.Selenium</groupId>
            <artifactId>Selenium-Java</artifactId>
            <version>2.48.2</version>
        </dependency>

    </dependencies>
</project>
12
Ronnie

cucumber.optionsを使用して単一の機能ファイルを実行できます。これにより、@CucumberOptionsアノテーションにあるすべてのオプションがオーバーライドされます。

mvn test -Dcucumber.options="src/test/features/com/perspecsys/salesforce/featurefiles/Account.feature"

Cucumber.optionsを使用して単一の機能ファイルを実行できます

mvn test -Dcucumber.options="--tags @TestTag"
5
user6939

ハードコーディングしたい場合は、次のようなことができます:

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(
        features={"src/test/resources/features/belly.feature"}  
        ,glue =  "steps"   //whatever the name of your steps package is
        )
public class RunCukesTest 
{
}
3
William

Mavenを使用しており、機能ごとに別のランナークラスがある場合、FailsafeプラグインまたはSurefireプラグインは、このようなコマンドラインからパラメーターを渡し、実行するランナーを選択します。

フェイルセーフバージョン:

-Dit.test=Account*Test,Login*Test

Surefireバージョン:

-Dtest=Account*Test,Login*Test

ワイルドカードを使用し、テストのコンマ区切りリストを渡し、完全な場所を参照し、パッケージでフィルター処理できることに注意してください。

-Dit.test=com.perpecsys.salesforce.*Test

このために、私は通常、フェイルセーフプラグインを使用します。Cucumberは統合テスト(エンドツーエンドテスト)に似ているため、Surefireプラグインは単体テストを実行するように設計されています。

両方のプラグインの詳細:

http://maven.Apache.org/surefire/maven-failsafe-plugin/examples/single-test.html

http://maven.Apache.org/surefire/maven-surefire-plugin/examples/single-test.html

Jenkinsからもまったく同じです。Mavenプロジェクトプラグインを使用して新しいMavenプロジェクトを作成し、BuildセクションのGoal and optionsフィールドで次のようなmavenコマンドを指定します。

clean verify -Dit.test=Account*Test

https://wiki.jenkins-ci.org/display/JENKINS/Maven+Project+Plugin

または、Mavenプロジェクトプラグインを使用していない場合は、Invoke top-level maven targetsステップをBuildに追加し、そこにオプションを追加します。

お役に立てれば。

2
Pedro Lopez