Невозможно запустить параллельные тесты в Cucumber & Testng

Я пытаюсь запустить параллельные тесты в двух браузерах, используя Testng и огурец.

Получая исключение ниже,

cucumber.runtime.CucumberException: когда ловушка объявляет аргумент, он должен иметь тип cucumber.api.Scenario. public void com.sample.data_republic.sample_ebay.EbayTest.loadBrowser (java.lang.String) на cucumber.runtime.java.JavaHookDefinition.execute (JavaHookDefinition.java:52) на cucumber.runtime.Runtime.runjavaHookIf 224)

Пример кода приведен ниже.

import cucumber.api.java.After;
import cucumber.api.java.Before;

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.Parameters;

public class EbayTest extends EbayPageObjects {

    public WebDriver driver;
    Properties propertyObj;

    @Before
    @Parameters("browser")
    public void loadBrowser(String browser) {
        // If the browser is Firefox, then do this
        if (browser.equalsIgnoreCase("firefox")) {
            System.setProperty("webdriver.gecko.driver", "src/test/resources/drivers/geckodriver");
            driver = new FirefoxDriver();
        } else if (browser.equalsIgnoreCase("chrome")) {
            System.setProperty("webdriver.chrome.driver", "src/test/resources/drivers/chromedriver");
            driver = new ChromeDriver();
        }

        propertyObj = readPropertyFile();
        driver.get(propertyObj.getProperty("url"));
    }

person Mano Kugan    schedule 16.03.2018    source источник


Ответы (1)


Before hook - это метод огурца, а не метод testNg, который вводится только с объектом Scenario. Поэтому нельзя использовать аннотацию @Parameters для передачи значений параметров. Вам нужно использовать перед крючком, как показано ниже.

@Before
public void beforeScenario(Scenario scenario) {

или без объекта сценария

 @Before
    public void beforeScenario() {

Либо вы можете сохранить значение браузера в файле свойств и получить к нему доступ до перехвата. Или создайте экземпляр драйвера в BeforeClass или BeforeMethod testNg в классе runner, где вы можете использовать аннотацию параметров.

@BeforeClass
@Parameters("browser")
public void loadBrowser(String browser) {
person Grasshopper    schedule 16.03.2018