web-dev-qa-db-ja.com

Mavenでcucumber-jvmテストを実行する方法

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>

前もって感謝します。

10
user3188928

テストクラスの末尾は、 "Test"サフィックスにする必要があります。

18
Sergiu Indrie

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に通知します。
11
Christian Hujer

Maven標準では、テストはsrc/test/Javaではなくsrc/main/Javaにある必要があります。あなたのpom.xmlは私には問題なく見えます。テストとリソースをmainからtestフォルダーにインポートすると、テストは問題なく実行されるはずです。

4
nilesh