2017-08-11 6 views
1

IDEの中では、個々の.featureファイルを右クリックしてもうまく動作するが、そうではないRunnerクラスのいずれかのパラメータを読み込みます。コマンドラインから、それは正常に動作します。 mvn clean compile test -Dcucumber.options="--tags @calculator"IDE内の.featureファイルを実行してもキュウリランナークラスが読み取られない

私は複数のWebアプリケーションを処理するために単一のフレームワークを使用しています。したがって、各アプリは別々のサブフォルダにあります。

+---test 
    +---java 
     +---com 
      +---company 
       +---app 
       ¦ +---app1 
       ¦ ¦ +---common 
       ¦ ¦ +---page 
       ¦ ¦ +---step 
       ¦ +---app2 
       ¦  +---common 
       ¦  +---page 
       ¦  +---step 
       +---core 

フレームワークは、そうpageは、各ページの詳細が含まれますcommonは全体のアプリ間で共通の機能のためになり、そしてstepを考えると、ときに、その後のステップのためにあるのPageObjectモデルを使用します。

私は同様のレイアウトを持っているリソースフォルダで

+---resources 
    +---com 
     +---company 
      +---app 
       +---app1 
       ¦ +---feature files go here 
       +---app2 
        +---feature files go here 

ランナークラスはメインappフォルダ内にあります。

package com.company.app; 

import com.company.core.Browser; 
import com.company.core._Start; 
import cucumber.api.CucumberOptions; 
import cucumber.api.SnippetType; 
import cucumber.api.junit.Cucumber; 
import org.junit.AfterClass; 
import org.junit.BeforeClass; 
import org.junit.runner.RunWith; 

import java.io.File; 
import java.net.InetAddress; 
import java.net.UnknownHostException; 

@RunWith(Cucumber.class) 
@CucumberOptions(
     plugin = {"pretty", 
       "html:target/cucumber", 
       "json:report/report.json", 
       "com.cucumber.listener.ExtentCucumberFormatter:" 
     }, 
     tags = {"[email protected]"}, 
     snippets = SnippetType.CAMELCASE 
) 
public class _RunnerTest extends _Start { 
    private static String reportFile = "report.html"; 
    private static String configFile = "extent-config.xml"; 

    @BeforeClass 
    public static void setup() { 
    // Stuff 
    } 

    @AfterClass 
    public static void teardown() { 
     // Stuff 
    } 
} 

Mavenのコマンドラインから実行すると、すべて正常に動作します。 .featureファイル(またはそれを含むシナリオ)を右クリックすると、テストは実行されますが、ランナークラスは使用されないため、レポートは存在せず、@ BeforeClassと@AfterClassは無視されます。

紛失しているものがありますか?

+0

私の最後で試してみました。同じ問題に遭遇する。しかし、 '@ BeforeClass'と' @ AfterClass'はランナークラスまたはステップ定義クラスにあります。 また、機能ファイルを直接実行しているため、ランナークラスとのやりとりがないため、コードは実行されません。 –

+0

@AshishDeshmukhのように、 '' @ BeforeClass''と '' @ AfterClass'''はランナーの一部です。現時点では、コールを報告するだけです。理想的には、私はブラウザの起動を入れてそこにシャットダウンしたいと思います。しかし、ランナーはIDE内で実行されている場合は呼び出されていないので、それは無意味です。 – MivaScott

+0

私はあなたが言ったことを達成するために(ブラウザの起動とシャットダウンを行うために)、私たちは同じもののための別の機能を作成し、ランナークラスを使用するのと同じ効果を達成するためにネストされた手順を使用することができます。 –

答えて

2

フィーチャーファイルを直接実行すると、ランナーを使用して実行されません。テストでランナーで定義された@BeforeClassと@AfterClassを使用する場合は、ランナーを実行する必要があります。

キュウバーは、JUnits @ClassRule@BeforeClass@AfterClassアノテーションをサポートしていますが、これを使用すると、異なるランナー間の移植性が制限されるため、お勧めできません。 コマンドラインまたはIDEを使用しているときに正しく実行されない可能性があります 代わりに、キュウリBefore およびAfterフックを使用することをお勧めします。

関連する問題