Cucumber/JUnit 5를 사용한 극작가 - PicoContainer를 사용한 종속성 주입

의존성 주입



이 프로젝트는 종속성 주입을 사용하여 TestContext의 인스턴스를 단계 정의 클래스에 넣습니다. 더 큰 테스트 프로젝트에서는 여러 단계 정의가 있고 Playwright 인스턴스 및 BrowserContext와 같은 공통 인스턴스를 만드는 쉬운 방법이 필요합니다. 또한 경고 텍스트를 가져오고 설정할 때와 같은 동일한 시나리오에서 단계 간에 데이터를 공유할 수 있습니다.

이것은 이전 시리즈에서 pico-container에 대한 maven 종속성을 포함하고 이 클래스를 필요로 하는 단계 클래스의 생성자를 통해 이 클래스를 주입하여 구현됩니다.

DemoSteps.java의 생성자 코드:

public DemoSteps(TestContext testContext) {
        this.testContext = testContext;
        this.browser = testContext.getBrowser();
    }


동일한 시나리오에서 단계 사이에 경고 텍스트를 저장하기 위해 종속성 주입을 사용하는 코드:

    @When("User clicks submit")
    public void userClicksSubmit() {
        DemoPage demoPage = new DemoPage(page);
        String alertText = demoPage.clickSubmit();
        testContext.setAlertText(alertText);
    }

    @Then("Verify alert {string}")
    public void verifyAlertToFillInResultIsShown(String alertText) {
        Assertions.assertEquals(alertText, testContext.getAlertText());
    }


전체 TestContext.java 클래스

package io.tpan.steps;

import com.microsoft.playwright.*;
import io.cucumber.java.AfterAll;
import io.cucumber.java.BeforeAll;

public class TestContext {

    protected static Playwright playwright;

    protected static Browser browser;

    protected BrowserContext browserContext;

    protected Page page;

    @BeforeAll
    public static void beforeAll(){
        playwright = Playwright.create();
        browser = playwright.chromium().launch(new BrowserType.LaunchOptions() // or firefox, webkit
                .setHeadless(false)
                .setSlowMo(100));
    }

    @AfterAll
    public static void afterAll(){
        browser.close();
        playwright.close();
    }

    public Browser getBrowser() {
        return browser;
    }

    String alertText;

    public String getAlertText() {
        return alertText;
    }

    public void setAlertText(String alertText) {
        this.alertText = alertText;
    }
}



항상 그렇듯이 코드는 Github에서 사용할 수 있습니다.

좋은 웹페이지 즐겨찾기