2017-01-10 11 views
0

JGivenをSpringでサポートして楽しんでください!@BeforeScenarioはJGiven Stage(Springサポート付き)で発行します

はしかし、私は@JGivenStageでannoted(Stageクラスに@BeforeScenarioで素敵な演奏@Autowiredに問題を抱えている。私は、プロパティファイルのカップルを読み込み、最小限のSpring構成(、部品などをスキャン)を持っています@EnableJGivenすなわち

@Configuration 
@EnableJGiven 
@PropertySource(ignoreResourceNotFound = true, 
    value = { "classpath:/config/qa.properties", "classpath:/config/env-${spring.profiles.active:}.properties" }) 
@ComponentScan(basePackages = { "com.mytest.qa.api", "com.mytest.stage", "com.mytest.qa.ui" }) 
public class SpringTestConfiguration {} 

私はいくつかの方法がありますJGivenシナリオを作成するtyringだが付さしかしGiven、ステージ内(それは数分かかりとして)一度セットアップを行うだけ。機能例えば次のよう(名前は簡潔にするために変更)は次のとおりです。 -

@ContextConfiguration(classes = SpringTestConfiguration.class) 
public MyFeatureTest extends SpringScenarioTest<MyGiven, MyWhen, MyThen> { 

    @Test 
    public void analysis_should_be_correct() { 
     given().I_am_at_the_home_page_with_example_dataset_analysed(); 
     when().I_click_on_analysis(); 
     then().I_expect_the_analysis_should_be_correct(); 
    } 

    @Test 
    public void download_should_be_correct() { 
     given().I_am_at_the_home_page_with_example_dataset_analysed(); 
     when().I_click_on_download(); 
     then().I_expect_the_download_should_be_correct(); 
    } 

} 

次のように私のMyGivenクラスがある: -

@JGivenStage 
public MyGiven extends Stage<MyGiven> { 

    @Autowired 
    private QaApi qaApi; // QA API use to hit API directly e.g. for setup 

    @Autowired 
    private HomePage homePage; 

    public MyGiven I_am_at_the_home_page_with_example_dataset_analysed() { 
     homePage.visit().login(defaultUsername, defaultPassword); 
     return self(); 
    } 

    @BeforeScenario 
    private void setupSingleAnalysedUpload() { 
     qaApi.uploadAndAnalyseExampleDataSet();    // !!!! qaApi is NULL !!!! 
    } 
} 

私が達成しようとしている私がシナリオを実行したときということですセットアップのsetupSingleAnalysedUpload()メソッドが一度だけ呼び出される(非常に遅いため)か、シナリオのいくつかのテストを行います。

私のアプローチは、このメソッドに@BeforeScenario注釈で注釈を付けることでした。ただし、protected QaApi qaApi;はnull です(@Autowired注釈で初期化されません)です。

- 私はsetupSingleAnalysedUpload方法をコメントアウトして、QaApihomePage.visit().login行にブレークポイントを固執した場合は、問題なく初期化される - @BeforeScenarioアノテーションで春のライフサイクルの問題を想定しました。

完全に踏ん張られている - 私の勘違い感は、jgiven-springライブラリに機能がないということですか?もしそうなら、ベストプラクティスはどうすればいいですか?

+0

どのJGivenのバージョンをお使いですか? Springの統合に関して、バージョン0.14.0に大きな変更がありました。 –

+0

私は '0.12.1'を使用しています - アップグレードし、それが役立つかどうかを確認します。 – bobmarksie

+0

それはうまくいった!お気軽に回答として追加してください。 – bobmarksie

答えて

1

これは修正する必要がありますv0.14.0

+0

ありがとうございましたJan - このライブラリの素晴らしい仕事 - それは本当にうまく動作し、余分なライフサイクルの注釈が大好きです - 各層(1)シナリオ(2)段階(3)ページオブジェクト/ APIはすべてき​​れいです(特にSpring +上記の例から分かるように、 – bobmarksie

関連する問題