Селен: несоответствие типов: невозможно преобразовать из класса <CustomListeners>в класс[] - PullRequest
0 голосов
/ 31 мая 2018

Я использую TestNG Framework.У меня есть Test1 класс, который расширяет BaseTestSuite.Также у меня есть класс CustomListeners, который реализует WebDriverEventListener.Когда я использую аннотацию @Listeners(CustomListeners.class) в классе Test, получаю следующую ошибку.Пожалуйста, помогите решить.

Type mismatch: cannot convert from Class<CustomListeners> to Class<? extends ITestNGListener>[]

Тестовый класс

@Listeners(CustomListeners.class) //Error line
public class Test1 extends BaseTestSuite {

    LoginPage lp;
    TabMenu tm;

    @Test(priority = 0, testName = "Verify Login")
    public void login() throws Exception {
        lp = new LoginPage(driver, test);
        tm = new TabMenu(driver, test);
        driver.get(Constants.url);
        lp.verifyLoginPageLogo();
        lp.setUserName("dmin");
        lp.setPassword("admin");
        lp.clickLoginBtn();
        tm.verifyTabMenu();
        tm.isCurrentTab("Dashboard");
    }
}

Класс слушателей

public class CustomListeners implements WebDriverEventListener {
/*
         * 
         * All Implemented methods
         * 
         * 
         */
}

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Как писал Кристиан Русу в своем ответе, интерфейс WebDriverEventListener и интерфейс ITestNGListener предназначены для двух отдельных целей.

Если вы написали класс, который реализует WebDriverEventListener всевам нужно добавить этот класс слушателя в ваш объект драйвера, создать новый EventFiringWebDriver объект и передать ваш объект драйвера его конструктору

EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);

после этого его бизнескак обычно, eventDriver поддерживает все методы, которые поддерживал ваш объект драйвера.

Где как,

ITestNGListener имеет несколько подинтерфейсов , таких как IAnnotationTransformer, IAnnotationTransformer2, IConfigurable, IConfigurationListener, IConfigurationListener2, IExecutionListener, IHookable, IInvokedMethodListener, IInvokedMethodListener2, IMethodInterceptor, IReporter, ISuiteListener, ITestListener.Это позволяет вам писать ловушки для связанных с TestNG событий, таких как onTestFailure, onStart и т. Д.

0 голосов
/ 31 мая 2018

Селен не является частью TestNG.Интерфейс WebDriverEventListener не расширяет ITestNGListener.Два класса не имеют ничего общего.TestNG требует класс, который расширяет или реализует один из слушателей, чтобы это работало.Чтобы объединить эти два класса в работу, заставьте свой класс CustomListeners расширить класс org.testng.TestListenerAdapter, потому что это единственный класс слушателя, а не интерфейс, поэтому вам не нужно будет реализовывать методы TestNG.

Это должно бытьобъявление вашего класса:

 public class CustomListeners extends TestListenerAdapter implements WebDriverEventListener

Попробуйте этот обходной путь.

...