gpt4 book ai didi

java - 如何避免在每次测试之前执行注释?

转载 作者:行者123 更新时间:2023-11-28 20:54:12 24 4
gpt4 key购买 nike

对于本网站上的任何格式问题或任何其他违反礼仪的问题,我深表歉意,这是我潜伏了过去几个月后的第一篇文章,我正在使用的所有内容对我来说都是全新的。

我最近开始用 Java/Cucumber/JUnit 编写一些 selenium 测试,遇到了一个我无法解决的问题。我知道问题出在哪里,但无法弄清楚如何实际更改我的测试来解决它。以下是一些背景信息:

特征文件示例:

Feature: Form Submission functionality 

@Run
Scenario: Submitting the demo form with correct details is succesful
Given I am on the demo page
When I submit the demo form with valid information
Then the thank you page is displayed

StepDefs 文件示例(我有四个这样的文件,测试站点的不同部分):

package testFiles.stepDefinitions;

import testFiles.testClasses.formSubmissionFunctionalityTest;
import cucumber.api.java.en.*;
import cucumber.api.java.After;
import cucumber.api.java.Before;

public class formSubmissionFunctionalityStepDefs {

private formSubmissionFunctionalityTest script = new formSubmissionFunctionalityTest();

@Before
public void setUpWebDriver() throws Exception {
script.setUp();
}

@Given("^I am on the demo page$")
public void i_am_on_the_demo_page() throws Throwable {
script.goToDemoPage();
}

@When("^I submit the demo form with valid information$")
public void i_submit_the_demo_form_with_valid_information() throws Throwable {
script.fillSubmitDemoForm();
}

@Then("^the thank you page is displayed$")
public void the_thank_you_page_is_displayed() throws Throwable {
script.checkThankYouPageTitle();
}

@After
public void tidyUp() {
script.tearDown();
}
}

然后我还有一个 formSubmissionFunctionalityTest.java 文件,其中包含诸如 fillSubmitDemoFrom 等方法的所有实际代码。我还有一个 setupTest.java 文件,其中包含 tearDownsetUp 等方法。

我遇到的问题是,每次执行测试时,都会打开四个浏览器 session ,而不是所需的单个浏览器。我知道这是因为 @Before 和 @After 注释是在每次测试之前执行的,而不是在整个套件之前执行的。我认为最好的解决方案是创建一个包含@Before 和@After 的新文件,但这是我似乎无法弄清楚的部分。在每个文件中,script 是不同的,这是我认为问题的来源,但我不完全确定。

有谁知道我可以重构我的测试的方法,以便它们都共享相同的@Before 和@After 方法,而不会导致打开多个浏览器 session ?提前谢谢你

最佳答案

问题不在于之前和之后,而是您如何管理您的 WebDriver 实例。通常,您需要在单例之类的东西中维护它的单个实例。您可以通过经典的单例模式来完成此操作,也可以通过注入(inject)来完成。

我强烈建议您查看 The Cucumber for Java Book .它不会解决您将面临的所有挑战,但对于您使用 Java 工作时的 Cucumber 来说,这是一本很棒的书。第 12 章是关于在 Cucumber 中使用 WebDriver,并讨论了使用注入(inject)来重用浏览器。

关于java - 如何避免在每次测试之前执行注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com