В настоящее время я пишу тест интеграции Spock для моего приложения Spring.
Я хотел бы использовать @Stepwise
для выполнения теста, который взаимодействует с базой данных, а затем получить следующую сборку теста.поверх данных, оставленных после первого теста.
К сожалению, кажется, что для каждого метода теста запускается новая транзакция, таким образом, очищаются данные, на которых я должен основываться.Rollback(false)
не предотвращает такое поведение, так как вся транзакция отбрасывается AFAIK.
Вот пример, MyUserService
взаимодействует с @Repository
-интерфейсом.
@Stepwise
@SpringBootTest
@TestPropertySource(locations = "classpath:application-test.properties")
class MyServiceImplIntegrationFlowSpec extends Specification {
@Autowired
@Subject
MyUserService myUserService
@Shared
String userId
void "create user"() {
when:
userId = myUserService.createUser()
then:
userId
}
void "change user permission"() {
when:
myUserService.changePermission(userId, "read")
then:
myUserService.fetchPermission() == "read"
}
}
Какможно ли повторно использовать данные, созданные предыдущим методом тестирования, как это обычно делается с @Stepwise
в сочетании с операциями с базой данных?