Cucumber JVM: избегайте внедрения зависимостей Picocontainer для функций, не помеченных для выполнения - PullRequest
0 голосов
/ 26 июня 2019

Предполагая, что у меня есть функция огурца с тегом @api

@api
Feature: BankID authentication

  Scenario Outline: Successful authentication of user using BankID

    Given the initial flow start URL 
    When  I enter that "<url>" into my browser
    ...

и шаги для выполнения, как показано ниже:

public class ApiSteps implements En {
    public ApiSteps (ABCinjected abcInjected) {
        Given("^the initial flow start URL $", () -> {});
        When("^I enter that \"([^\"]*)\" into my browser$", abcInjected::navigateToAuthenticationPage);
        ...
    }

Даже если я определю, что эта функция не будет выполнятьсяуказав различные теги Cucumber или явно указав tags = {"not @api"}, хотя сами шаги не выполняются сами по себе, Picocontainer по-прежнему создает и внедряет экземпляр класса ABCinjected, что нежелательно.Можно ли контролировать это поведение?Я предполагаю, что если функция помечена как не подлежащая выполнению, а связанные сценарии / шаги игнорируются, последовательно DI не должно происходить.

1 Ответ

0 голосов
/ 28 июня 2019

Я получил ответ от автора Cucumber на Github:

При использовании lamda steddefs необходимо создать экземпляр класса для регистрации шаги. И нам нужно знать шаги, определенные классом для определить, должны ли мы создать его экземпляр. Это мертвый замок требования.

Еще одна рекомендация - установить разные пакеты для шагов (API, юниты и т. Д.) И установить разные значения времени выполнения.

https://github.com/cucumber/cucumber-jvm/issues/1672

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...