私はCucumber/Mavenに少し慣れていないので、テストケースの実行に関するヘルプが必要です。私は、CucumberとSeleniumを使用してEclipseで自動化スイートを開発しました。特定の機能ファイル/ Junitランナークラスを実行するには、Eclipseでファイルを右クリックして実行します。
しかし、50個の機能ファイルまたはJUnitクラスから2-3個の機能ファイル(または)2-3個のJunitランナークラスを実行する特定のコマンドを指定して、コマンドプロンプトまたはJenkinsで実行するにはどうすればよいですか?
以下は、私がEclipseでどのように構造化したかを示すパッケージエクスプローラーです。
以下は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>
cucumber.options
を使用して単一の機能ファイルを実行できます。これにより、@CucumberOptions
アノテーションにあるすべてのオプションがオーバーライドされます。
mvn test -Dcucumber.options="src/test/features/com/perspecsys/salesforce/featurefiles/Account.feature"
Cucumber.optionsを使用して単一の機能ファイルを実行できます
mvn test -Dcucumber.options="--tags @TestTag"
ハードコーディングしたい場合は、次のようなことができます:
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
{
}
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に追加し、そこにオプションを追加します。
お役に立てれば。