享受使用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库中缺少功能?如果是这样,最佳实践工作是什么?