假设我有一个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