黄瓜JVM:避免由Picocontainer注入依赖项来标记未执行的功能

时间:2019-06-26 14:27:06

标签: cucumber cucumber-jvm picocontainer

假设我有一个标记为@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 :(得分:0)

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

  

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

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

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