JGiven Stage 中的@BeforeScenario 问题(支持 Spring)

@BeforeScenario issues in JGiven Stage (with Spring Support)

在 Spring 支持下享受使用 JGiven 的乐趣!

但是,我遇到了 @AutowiredStage class 中与 @BeforeScenario 打得很好的问题(用 @JGivenStage 注释)。我有一个最小 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 场景,它有多种方法,但只在 Given 阶段设置 一次(因为它需要几分钟)。该功能例如MyFeatureTest (为简洁起见已更改名称) 如下:-

@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();
    }

}

我的MyGivenclass如下:-

@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 !!!!
    }
}

我想要实现的是,当我 运行 一个场景(或一个场景的几个测试)时,setup setupSingleAnalysedUpload() 方法只被调用一次(因为它非常慢) .

我的方法是用 @BeforeScenario 注释来注释这个方法。但是,protected QaApi qaApi; 为空 (未通过 @Autowired 注释初始化)

Note - If I comment out the setupSingleAnalysedUpload method and stick a breakpoint on homePage.visit().login line then QaApi is initialised without issue - assuming spring life-cycling issues with @BeforeScenario annotation.

完全被踩了 - 我的直觉是 jgiven-spring 库中缺少功能?如果是这样,最佳实践是什么?

这应该在 v0.14.0

中得到解决