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

时间:2017-01-10 11:59:12

标签: spring jgiven

享受使用JGiven的Spring支持!

但是,我@Autowired@BeforeScenario课程中使用Stage@JGivenStage进行了很好的共享问题(注释为@EnableJGiven。我的弹簧配置很少< em>(读取几个属性文件,扫描组件等)并用@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 {} 表示,即

Given

我想创建一个JGiven场景,它有几种方法但只在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(); } } (为简洁起见,名称已更改)如下: -

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()

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

我的方法是使用protected QaApi qaApi;注释来注释此方法。但是,@Autowired为空(不会通过setupSingleAnalysedUpload注释进行初始化)

  

注意 - 如果我注释掉homePage.visit().login方法并在QaApi行上添加断点,则@BeforeScenario初始化没有问题 - 假设弹簧生命周期问题if(string1.toUpperCase() == string2.toUpperCase()) 注释。

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

1 个答案:

答案 0 :(得分:1)

这应该在v0.14.0

中修复