Получение исключения нулевого указателя с использованием ExtentReport - PullRequest
2 голосов
/ 17 марта 2019

у меня 3 класс. Test1, Test2 и базовый класс. Test1 и Test2 расширяет базовый класс. Когда я выполняю оба класса, используя TestNg xml, происходит сбой @BeforeClass с исключением нулевого указателя. Отчет test1 генерируется. Также безо всяких подробностей сообщаю о своей работоспособности. Пожалуйста, помогите мне

==================================== Базовый класс ========= =====================

public class Base
{
public ExtentReports reports;
public ExtentTest logger;
  @BeforeClass

  public void startBrowser() 
  {
      String name= LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMMYY_HHmmss"));
      logger = reports.createTest("Test1"+name);
      System.out.println("Started Test1");

}

  @BeforeSuite
  public void initialSetup()
  {
      String name= LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMMYY_HHmmss"));
      ExtentHtmlReporter extent = new ExtentHtmlReporter(new File("./Reports/"+name+".html"));
      reports = new ExtentReports();
      reports.attachReporter(extent); 
  }

  @AfterClass
  public void end()
  {
      reports.flush();
  }

}

=========================== Test1 класс ================== ===

public class Test1 extends Base{
  @Test
  public void TestCase() 
  {

      logger.info("Test1");
  }
}

==================== Класс Test2 ======================== ====

public class Test2 extends Base{
  @Test
  public void f() 
  {
      System.out.println("Started Test2");
  }
}

1 Ответ

2 голосов
/ 17 марта 2019

Проблема заключается в вашем тестовом коде.Вы инициализировали элемент данных reports аннотированным методом @BeforeSuite.

Это выполняется только один раз для тега <suite>.Поскольку оба ваших класса происходят из одного базового класса, метод initialSetup() будет выполняться только один раз (например, Test1.java).

Именно поэтому, когда ваши @BeforeClass аннотированные startBrowser() попыткипри доступе к reports.createTest("Test1"+name); для Test2 вы получаете исключение NullPointerException.

Вам необходимо изменить это, перемещая ваш вызов initialSetup() из метода @BeforeClass.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...