0

假设我标记了 Cucumber 功能@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 不应该发生。

4

1 回答 1

0

我在 Github 上收到了 Cucumber 贡献者的回复:

使用 lamda steddefs 时,必须实例化该类以注册步骤。我们需要知道类定义的步骤来确定我们是否应该实例化它。这是需求的死锁。

另一个建议是为步骤(api、单元等)设置不同的包,并在运行时设置不同的粘合。

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

于 2019-06-28T11:46:04.747 回答