21

Java と Maven を使用して、最初の実行可能な仕様を構築しようとしています。この構造の単純なプロジェクトを作成しました。

specification
|-src
  |-test
    |-java
      |-mypackage
        |-MyFeatureTest.java
    |-resources
      |-MyFeature.feature

JunitテストMyFeatureTest.javaでは、これがあります:

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

@RunWith(Cucumber.class)
public class HomepageTest {
}

https://github.com/cucumber/cucumber-jvm/wiki/IDE-supportは、次の行を追加する必要があると言います:

@Cucumber.Options(paths={"my/super.feature:34"})

私はそれをに変更しようとしました

@Cucumber.Options(paths={"src/test/resources/"})

しかし、注釈@Cucumber.Optionsはまったく利用できません。私pom.xmlにはこの依存関係があります:

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.10</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>info.cukes</groupId>
  <artifactId>cucumber-java</artifactId>
  <version>1.0.0.RC20</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>info.cukes</groupId>
  <artifactId>cucumber-junit</artifactId>
  <version>1.0.0.RC20</version>
  <scope>test</scope>
</dependency>

何か不足していますか?

更新何かが欠けていました: The cucumber feature file must be in a subdirectory src/test/resources/mypackage/. そうしないと、junit テストで検出されません。

機能テストを同じディレクトリに置くと実行できるsrc/main/test/ので、ブロックすることはありません。しかし、私は全体の設定を理解したいと思います。

4

7 に答える 7

19

ここで私の質問を見てください:

次のように options アノテーションに feature 属性を設定することで、クラスパス上の場所を指定できます。

@Cucumber.Options(features="src/test/resources")

編集:

新しいバージョンのコードでは

@CucumberOptions(features="src/test/resources")
于 2012-12-13T22:49:41.050 に答える
18

classpathオプションはCucumberのドキュメントでは明らかではありません(JavaDocにもありません)。他の場所のオプションがドキュメント化されているCLIドキュメント(編集:リンクが無効で、同等のものを見つけることができません)から推測しましList configuration optionsドキュメントのセクションを参照してください 。マルチモジュールMaven projectgの別のモジュールから機能定義を取得する方法も明らかではありません。

これが、Maven マルチモジュール プロジェクトで (IDE およびコマンド ラインから実行して) 行った理由です。

@CucumberOptions(
        features = {"classpath:product"},
        //...
)
public class RunCukesTest extends AbstractTestNGSpringContextTests {

機能ファイルがあった場所

main-project
    sub-module-1
        src/test/java/com/foo/
            RunCukesTest.java
        src/test/resources/product/
            feature_1.feature
            feature_2.feature
    sub-module-2
        ...

途中で見えなくてよかったsrc/test/resources/パスに先頭がないことに注意してください。クラスパス (現在の作業ディレクトリではなく) を適切に定義する必要があるため、クラスパスを使用する方が脆弱ではありません。

于 2016-08-03T04:09:32.397 に答える
7

使用できます

@CucumberOptions(
    format = "pretty",
    tags = {"~@Ignore"},
    features = "src/test/resources/com/"  //refer to Feature file
)

パッケージ内のすべての機能ファイルをスキャンする

于 2014-07-08T10:53:15.330 に答える
5

わかりました。これは月曜日の朝にしか配置できません...使用したディレクトリレイアウトが正しくありませんでした。キュウリの機能をパッケージ構造に一致するサブディレクトリに配置するのを忘れました。

必要なパッケージディレクトリもsrc/test/resources/!に作成してください。

于 2012-03-12T07:27:01.637 に答える
1

一度使うと

import cucumber.api.CucumberOptions;

以下を pom.xml に追加する必要があります。そうしないと、「mvn test」が機能しません。また、IDE からのみテストを実行できます。参照: https://github.com/cucumber/cucumber-java-skeleton/blob/master/pom.xml

<properties>
    <java.version>1.7</java.version>
    <junit.version>4.12</junit.version>
    <cucumber.version>1.2.2</cucumber.version>
    <maven.compiler.version>3.3</maven.compiler.version>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.version}</version>
            <configuration>
                <encoding>UTF-8</encoding>
                <source>${java.version}</source>
                <target>${java.version}</target>
                <compilerArgument>-Werror</compilerArgument>
            </configuration>
        </plugin>
    </plugins>
</build>
于 2015-11-15T23:26:58.997 に答える