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
方法をコメントアウトして、QaApi
をhomePage.visit().login
行にブレークポイントを固執した場合は、問題なく初期化される -@BeforeScenario
アノテーションで春のライフサイクルの問題を想定しました。
完全に踏ん張られている - 私の勘違い感は、jgiven-springライブラリに機能がないということですか?もしそうなら、ベストプラクティスはどうすればいいですか?
どのJGivenのバージョンをお使いですか? Springの統合に関して、バージョン0.14.0に大きな変更がありました。 –
私は '0.12.1'を使用しています - アップグレードし、それが役立つかどうかを確認します。 – bobmarksie
それはうまくいった!お気軽に回答として追加してください。 – bobmarksie