Cucumber JVM:避免使用Picocontainer的依赖性注入,以供未标记执行的功能



假设我有一个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);
        ...
    }

即使我定义了该功能,不通过指定不同的黄瓜标签或明确指定tags = {"not @api"}来执行该功能,尽管步骤本身本身并未执行,但Picocontainer仍然会创建和注入AbcIndight类的实例,这是不受欢迎的。可以控制这种行为吗?我假设如果将功能标记为不执行的功能,并且忽略了相关的方案/步骤,则不应发生DI。

我在github上得到了cucumber贡献者的回应:

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

另一个建议是为步骤(API,单位等(设置不同的软件包,并在运行时设置不同的胶水。

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

最新更新