18

cucumber-jvm javadocsには、glue 要素の目的はステップ定義とフックの場所を指定することであると記載されています。しかし、これは私にはうまくいかないようです。ディレクトリ a に機能があり、ディレクトリ b にステップ定義があるとします。それで、

@Cucumber.Options(
        features= "directory_a", 
            glue="directory_b"
)

directory_a から機能ファイルをロードしますが、directive_b からステップ定義をロードしません。ただし、使用する場合

@Cucumber.Options(
        features= {"directory_a", "directory_b"}
)

次に、directory_a の機能が読み込まれ、directory_b のステップ定義も取得されます。まさに私が欲しいものですが、前者が機能しない理由がわかりませんか? URIのフォーマットが異なることを期待していることと関係があると思います(おそらく、classpath://などを先頭に追加する必要があります)が、ドキュメントでこれに関する情報を見つけることができません.

4

3 に答える 3

19

私は次のようなものをうまく使用しました:

@RunWith(Cucumber.class)
@Cucumber.Options(
    //this code will only look into "features/" folder for features
    features={"classpath:features/"},
    glue = { "com.mycompany.cucumber.stepdefinitions", "com.mycompany.cucumber.hooks" },
    format = { "com.mycompany.cucumber.formatter.RuntimeInfoCatcher", "json:target/cucumber.json" },
    tags = { "@working" }
    )
public class CucumberStarterIT {
}

http://cukes.info/api/cucumber/jvm/javadoc/cucumber/api/junit/Cucumber.Options.htmlのドキュメントを見ると、オプションが型であることが指定されているString[]ため、おそらく「うまく」動作することは期待されていません単一値リストを指定しない場合。glue={"directory_b"}何が起こるか試してみてください。

于 2013-09-11T19:23:41.537 に答える
9

私もこの問題を抱えていました...そしてこれまでのところ、次のようです:

「features」はファイルシステムのパスを探しています:

features = "src/foo/bar"

一方、「接着剤」はパッケージ名を探しています:

glue = "foo.bar"

それらが異なる理由はわかりませんが、これは私にとってはうまくいっているようです。

于 2016-03-25T19:33:07.053 に答える