1

我对 Cucumber-jvm/Selenium 还是很陌生,所以如果这个问题听起来很愚蠢,我很抱歉。

背景:我是一家大公司的实习生。我正在为产品进行自动化软件测试。已经有一个现有的自动化测试步骤。我们要做的是扩展项目并添加我们自己的步骤。问题是几乎所有步骤都有相同的钩子方法。我之前问过一个关于如何避免运行钩子方法的问题,一个非常好的人说在钩子方法上使用标签。那是在我发现之前项目中几乎所有的钩子方法都差不多之前。这让我觉得它不是很快/优化,因为如果钩子方法是全局的,那么每次我运行一个特性文件时,它都会执行所有相同的钩子方法。经过几天的编码和研究,我发现使用 picocontainer 进行依赖注入,我认为这是解决当前问题的好方法,但我读了一些文章说依赖注入被认为是一种不好的做法。

我的问题:考虑我上面所说的,在 cucumber-jvm 中使用 picocontainer 的依赖注入是否考虑不好的做法?如果是,是否有更好的解决方案?

(可选背景)我认为这并不重要,但我只是将其包括在内,每个步骤中几乎 95% 的钩子方法:

@Before
public void keepScenario(Scenario scenario){
    this.scenario = scenario;
    fWait = new FluentWait<WebDriver>(BrowserDriver.getCurrentDriver());
    fWait.withTimeout(Duration.ofSeconds(10));
    fWait.ignoring(WebDriverException.class);
}

@After
public void screenshotOnFailure(){
    if (scenario.getStatus().equals("failed")) {
        BrowserDriver.getScreenshot(scenario);
    }
}
4

1 回答 1

1

依赖注入解决了一个场景中多个步骤定义文件之间共享状态的问题。将步骤注入其他步骤可能被认为是一种不好的做法,但总的来说 DI 本身不是。但这似乎都不是您的直接问题。

你的问题似乎是你有多个钩子做同样的事情。您可以删除这些重复的钩子或使用非常严格的方法来选择您将使用的功能和胶水(检查运行器或命令行参数上的 CucumberOptions)。如果缩小到单个类,它将仅使用该类中的步骤和钩子。

或者,您可以删除重复的钩子。

于 2018-07-20T23:43:42.877 回答