Mavenで次の場所にあるキュウリテストを実行するにはどうすればよいですか。
ソースフォルダー 'src/main/Java'および 'src/main/resources'には、各ソースフォルダーに作成されたパッケージ 'com.testing.TestProject.login'のステップ定義と機能ファイルが含まれています。
POMファイルにプラグインと依存関係を含めましたが、mavenフェーズ統合テストを実行すると、キュウリテストが実行されません。
Mavenは初めてです。 Mavenでキュウリのテストを実行するためにPOMファイルに何を含めるかを教えてください。
これが私のPOMファイルです:
<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.testing</groupId>
<artifactId>MyMavenProject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>MyMavenProject</name>
<url>http://maven.Apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<cucumber-jvm.version>1.1.5</cucumber-jvm.version>
<Selenium.version>2.39.0</Selenium.version>
<junit.version>4.11</junit.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>integration-test</phase>
<goals>
<goal>Java</goal>
</goals>
</execution>
</executions>
<configuration>
<executableDependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-core</artifactId>
</executableDependency>
<mainClass>cucumber.api.cli.Main</mainClass>
<arguments>
<argument>--format</argument>
<argument>junit:target/cucumber-junit-report/allcukes.xml</argument>
<argument>--format</argument>
<argument>pretty</argument>
<argument>--format</argument>
<argument>html:target/cucumber-html-report</argument>
<argument>--tags</argument>
<argument>@login</argument>
<argument>--glue</argument>
<argument>com/</argument>
<argument>src/</argument>
</arguments>
</configuration>
<dependencies>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-core</artifactId>
<version>1.1.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>${Selenium.version}</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>${cucumber-jvm.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber-jvm.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.7</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
</dependencies>
</project>
前もって感謝します。
テストクラスの末尾は、 "Test"サフィックスにする必要があります。
MavenからCucumber JVMテストを実行する一般的な方法は、JUnitからCucumberをトリガーするRunCukesTest
クラスを提供して、JUnitを介してそれらをブリッジすることです。
典型的なRunCukesTestクラスは次のようになります。
_package com.testing;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources/features",
glue = "com.testing"
)
public class RunCukesTest { // NOSONAR SonarLint does not know about @RunWith(Cucumber.class)
}
_
詳細の説明:
@RunWith(Cucumber.class)
は、デフォルトのランナーではこのテストクラスを実行せず、JUnit内からCucumberを実行するJUnit4のテストランナーであるCucumber
を実行するようJUnitに指示します。@CucumberOptions
_は、どこにあるかをCucumber
に伝えます。主なものは:features
は、機能ファイルの場所をCucumber
に伝えます。glue
は、ステップ定義が含まれているパッケージをCucumber
に通知します。Maven標準では、テストはsrc/test/Java
ではなくsrc/main/Java
にある必要があります。あなたのpom.xmlは私には問題なく見えます。テストとリソースをmain
からtest
フォルダーにインポートすると、テストは問題なく実行されるはずです。