Решение с использованием SpringRunner:
Аннотируйте шаги с помощью @Bean
и @StepScope
, и в результате этот объект будет иметь общее время жизни с StepExecution.
public class StaffStepsConfig {
protected static String BASE_STAFF_URL = "/api/v1a/staff/";
protected static Staff staff;
@Bean
@StepScope
public StaffSteps getStaffMemberById(String id){
staff = when().get(BASE_STAFF_URL+id)
.then().assertThat()
.statusCode(HttpStatus.SC_OK)
.extract()
.as(Staff.class);
return this;
}
@Bean
@StepScope
public Staff getStaff(){return staff;}
}
В Тестовый класс, зависимость spring-batch-test, предоставляет набор полезных вспомогательных методов и прослушивателей, которые можно использовать для настройки контекста Spring Batch во время тестирования.
@RunWith(SpringRunner.class)
//@SpringBatchTest
//@SpringBootTest
@EnableAutoConfiguration
@ContextConfiguration(classes = { StaffStepsConfig.class })
@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
public class StaffControllerIT extends BaseTest {
@Autowired
private StaffSteps staffSteps;
@Before
public void setUp(){
}
@Test
public void getStaffMemberById(){
String id ="ff8081817049a34e017049a379320000";
Staff staff = staffSteps.getStaffMemberById(id).getStaff();
System.err.println(staff);
}
}
Примечание. Этот бегунок распознает @SpringBootTest
. Я думаю, что проблема в том, как генерируются результаты теста. Шаги не читаются Серенити. Spring будет внедрять @Autowired
классы, а @serenity
вводит @steps
классы. Я предполагаю, что это происходит потому, что спокойствие и весна создают компоненты в разных контекстах.
необходимые зависимости в вашей пом. xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
<version>2.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.1.9.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-test</artifactId>
<version>4.2.0.RELEASE</version>
<scope>test</scope>
</dependency>