2017-11-27 17 views
0

キュウリのコマンドライン(cucumber.api.cli.Main)からテストを開始するときに、ランナーを定義/指定することはできますか? 私の理由はこれですので、私はJenkinsでxmlレポートを生成し、その結果をALM Octaneにプッシュできます。cucumber.api.cli.Mainの別のランナーを選択しますか?

私は一種のjavaexectを行うとJUnitランナー+ Mavenの(または唯一のJUnitランナー)を使用している場合@RunWith(OctaneCucumber.class)でこれを行うために、私はその可能性を知っているcucumber.api.cli.Main を呼び出すために、このプロジェクトとその使用のGradle、そうでない場合は、そのタグは無視さを継承しています。私はそのタグ付きのカスタムランナーを持っていますが、私がcucumber.api.cli.Mainから走るとき、私はそれを実行する方法を見つけることができず、私のタグはちょうど無視されます。

+1

cucumber.api.cli.Mainは、コマンドラインから呼び出されたときにランナーを使用しません。カスタムコードをプラグインとして追加するには、-pオプションを使用します。この記事 - https://automationrhapsody.com/create-cucumber-jvm-custom-formatter/を参照してください。 – Grasshopper

答えて

0

@Grasshopperが示唆したことは正確には機能しませんでしたが、正しい方向に見せてくれました。

代わりにプラグインとしてのコードを追加するので、私は、CLIコマンドを実行し、ビットにrun方法を変更するためにベースとしてそれを使用して、cucumber.api.cli.Mainのコピーを作成することにより、オクタン価レポーターを「/負荷ハック」するために管理し、実行時にプラグインを追加してください。プラグインはコンストラクタでかなりの数のパラメータを必要としたので、これを行う必要がありました。完璧な解決策ではないかもしれませんが、私は最初に持っていたプロセスを構築するためにgradleを保つことができました。

public static byte run(String[] argv, ClassLoader classLoader) throws IOException { 
    RuntimeOptions runtimeOptions = new RuntimeOptions(new ArrayList<String>(asList(argv))); 

    ResourceLoader resourceLoader = new MultiLoader(classLoader); 
    ClassFinder classFinder = new ResourceLoaderClassFinder(resourceLoader, classLoader); 
    Runtime runtime = new Runtime(resourceLoader, classFinder, classLoader, runtimeOptions); 

    //====================Added the following lines ================ 
    //Hardcoded runner(?) class. If its changed, it will need to be changed here also 
    OutputFile outputFile = new OutputFile(Main.class); 
    runtimeOptions.addPlugin(new HPEAlmOctaneGherkinFormatter(resourceLoader, runtimeOptions.getFeaturePaths(), outputFile)); 
    //============================================================== 

    runtime.run(); 

    return runtime.exitStatus(); 
} 
関連する問題