【发布时间】:2015-09-01 14:58:05
【问题描述】:
对于任何格式问题或任何其他违反本网站礼仪的内容,这是我潜伏了几个月后的第一篇文章,我正在使用的所有内容对我来说都是全新的。
我最近开始在 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 文件,其中包含 tearDown 和 setUp 等方法。
我遇到的问题是,每次执行测试时,都会打开四个浏览器会话,而不是打开所需的单个浏览器。我知道这是因为 @Before 和 @After 注释在每次测试之前执行,而不是在整个套件之前执行。我认为最好的解决方案是创建一个带有@Before 和@After 的新文件,但这是我似乎无法弄清楚的部分。在每个文件中,script 是不同的,这就是我认为问题所在,但我并不完全确定。
有谁知道我可以重组我的测试的方法,以便它们都共享相同的@Before 和@After 方法,而不会导致打开多个浏览器会话?提前谢谢你
【问题讨论】:
-
谢谢,但不是我真正想要的。我想我正在寻找的解决方案将涉及使用
@Before和@After注释,但是以不同方式设置类以允许所有测试使用一组注释而不是在每个测试类中使用它们,从而导致多个浏览器运行测试时打开
标签: java testing selenium-webdriver junit cucumber-jvm