假设我有一个标记为@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。
答案 0 :(得分:0)
我在Github上收到了黄瓜贡献者的回复:
使用lamda steddefs时,必须实例化该类以进行注册 步骤。我们需要知道该类定义的步骤 确定我们是否应该实例化它。这是一个死锁 要求。
另一建议是为步骤(API,单元等)设置不同的程序包,并在运行时设置不同的粘合。