Перейти к содержимому

Фотография

Запуск тестов через xml TestNg


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 jerom55

jerom55

    Новый участник

  • Members
  • Pip
  • 17 сообщений
  • ФИО:Иванов Сергей Викторович

Отправлено 30 сентября 2022 - 08:37

Всем привет!

 

Я делаю свои первые шаги в автоматическом тестирование. Тесты пишу Selenium+java+testng. Пока писал тесты в одном классе всё было ОК. Теперь же написал второй класс тестов, и теперь выполняется только один, а второй весь падает с ошибкой даже не начинаясь, ну то есть они начинаются, и на первой строчке кода сразу падают).

В xml прописаны оба класса. В чём может быть дело?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
    <test name="Pay">
        <classes>
            <class name="TestsTopiframe.PayTests"/>
        </classes>
    </test>
    <test name="Negative">
    <classes>
        <class name="TestsTopiframe.NegativeTests"/>
    </classes>
    </test>
</suite>

Прикрепленные файлы


  • 0

#2 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 30 сентября 2022 - 10:50

а второй весь падает с ошибкой даже не начинаясь, ну то есть они начинаются, и на первой строчке кода сразу падают)

 

 

 

так может текст ошибки стоит привести ?


  • 0

#3 jerom55

jerom55

    Новый участник

  • Members
  • Pip
  • 17 сообщений
  • ФИО:Иванов Сергей Викторович

Отправлено 30 сентября 2022 - 14:44

Обновил java на компе ошибка стала понятней. До этого просто ссылалась на первую строчку кода теста.

java.lang.NullPointerException: Cannot invoke "Topiframe.AppManager.NavigationHelper.goGoodsUrl(String)" because the return value of 
"Topiframe.AppManager.ApplicationManager.getNavigationHelper()" is null

И всё равно это очень странно.  Вот весь код из разных классов, до класса одного из  тестов. Почему для одного из классов всё проходит ок, а другой фигу...

 public class NavigationHelper {
 public void goGoodsUrl(String url) throws InterruptedException {
        // Вводим адрес страницы
        wd.get(url);
    }
}
 public class ApplicationManager {
  
    public NavigationHelper getNavigationHelper() {
    return navigationHelper;
  }
}
 
public class Test2 extends TestBase {

@Test(description = "Validation a refillable phone number field")

  public void C5002() throws InterruptedException {
    app.getNavigationHelper().goGoodsUrl("https://topiframe.nsc-tech.ru/init-payment/9463");
    app.getRefillableNumber().fillPhoneLetters("TEST");
    app.getRefillableNumber().fillPhoneNumber("9032582114");
  }
}

Когда тесты запускаю по отдельности каждый из своего класса всё ок.


  • 0

#4 peskar

peskar

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 20 октября 2022 - 07:17

//оффтоп// Кто-нибудь, дайте пенделя тому, кто вставляет некротопики из форума в новостные рассылки... //оффтоп//

Это же не весь код, правда?

Вот тут возращается null, значит, navigationHelper не инициализируется там, где он инициализируется (или не передается в конструктор классу ApplicationManager, если он передается, или передается null в конструктор):

public class ApplicationManager {
    public NavigationHelper getNavigationHelper() {
        return navigationHelper;
  }
}

  • 0

#5 jerom55

jerom55

    Новый участник

  • Members
  • Pip
  • 17 сообщений
  • ФИО:Иванов Сергей Викторович

Отправлено 26 октября 2022 - 09:47

package Topiframe.AppManager;

public class ApplicationManager {

private NavigationHelper navigationHelper;

public NavigationHelper getNavigationHelper() {
    return navigationHelper;
  }
}

Ну ApplicationManager это класс которому я делегировал из Test base. В самом классе TestBase 

public class TestBase {
 protected final ApplicationManager app = new ApplicationManager();
}

В NavigationHelper методом goGoodsUrl стринговой переменной передаю URL

package Topiframe.AppManager;

public class NavigationHelper {
 public void goGoodsUrl(String url) throws InterruptedException {
    wd.get(url);
  }
}

А сам урл уже в тестовом классе ввожу.

public class Test2 extends TestBase {

@Test(description = "Validation a refillable phone number field")

  public void C5002() throws InterruptedException {
    app.getNavigationHelper().goGoodsUrl("https://topiframe.nsc-tech.ru/init-payment/9463");
    app.getRefillableNumber().fillPhoneLetters("TEST");
    app.getRefillableNumber().fillPhoneNumber("9032582114");
  }
}

Почему тогда для одного из классов передаётся не null и всё работает а во втором случае нет. Странно

Один из тестов другого класса выглядит идентично 

public class TopiframeTests extends TestBase {

  @Test(retryAnalyzer = Retry.class,
        description = "Оплата услуги банковской картой без 3ds")

  public void C6000() throws InterruptedException {
    app.getNavigationHelper().goGoodsUrl("https://topiframe.nsc-tech.ru/init-payment/9463");
    app.getRefillableNumber().fillPhoneNumber("");
    app.getSourcePaymentData().setAmountPay("");
    app.getSourcePaymentData().fillPaymentDDK("", "", "", "");
    app.getNavigationHelper().chequeEmail("");
    app.getCapcha().getCaptchaCode();
    app.getNavigationHelper().tickedCheckBoxClickPayButton();
    app.getWaitingEndOfPayment().takeTransactionId();
  }

  • 0

#6 jerom55

jerom55

    Новый участник

  • Members
  • Pip
  • 17 сообщений
  • ФИО:Иванов Сергей Викторович

Отправлено 26 октября 2022 - 09:48

 

//оффтоп// Кто-нибудь, дайте пенделя тому, кто вставляет некротопики из форума в новостные рассылки... //оффтоп//

Это же не весь код, правда?

Вот тут возращается null, значит, navigationHelper не инициализируется там, где он инициализируется (или не передается в конструктор классу ApplicationManager, если он передается, или передается null в конструктор):

public class ApplicationManager {
    public NavigationHelper getNavigationHelper() {
        return navigationHelper;
  }
}

Вопрос))) чуть выше задал))

Спасибо


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных