【问题标题】:ExtentTest instance from ITestListener in Test and Page classesTest 和 Page 类中 ITestListener 的 ExtentTest 实例
【发布时间】:2017-07-23 14:15:46
【问题描述】:

我正在尝试将 ExtentReports 与 ITestListener 一起使用。我面临的问题是我无法在 Test 类中使用 ITestListener 的 ExtentTest 实例进行日志记录。请帮我解决这个问题。

下面是监听类。

package com.dice.listeners;

import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;

public class ExtentListener implements ITestListener    
{
    private ExtentReports reports = new ExtentReports("File Location");
    private ExtentTest test;

    @Override
      public void onTestStart(ITestResult arg0)
    {
        test = reports.startTest(arg0.getMethod().getMethodName());
    }

    @Override
      public void onFinish(ITestContext arg0)
    {
        reports.endTest(test);
        reports.flush();
        reports.close();
    }

    @Override
      public void onTestFailure(ITestResult arg0)
    {
    }

    @Override
      public void onTestSuccess(ITestResult arg0)
    {
    }

    @Override
      public void onTestSkipped(ITestResult arg0)
    {
        // TODO Auto-generated method stub
    }

    @Override
      public void onStart(ITestContext arg0)
    {
        // TODO Auto-generated method stub
    }

    @Override
      public void onTestFailedButWithinSuccessPercentage(ITestResult arg0)
    {
        // TODO Auto-generated method stub
    }
}

下面是测试类。

package com.dice;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

import com.dice.base.BaseTest;
import com.dice.listeners.ExtentListener;
import com.relevantcodes.extentreports.*;

@Listeners(com.dice.listeners.ExtentListener.class)
public class FirstTest extends BaseTest {

    @Test
    public void firstTestMethod() {
        driver.get("http://www.dice.com");
        test.log(LogStatus.INFO, "opening dice.com"); /*'test' not same instance as in ExtentListener class*/
    }

    @Test
    public void secondTestMethod() {
        driver.get("http://www.linkedin.com");
        test.log(LogStatus.INFO, "opening linkedin.com");/*'test' not same instance as in ExtentListener class*/
    }
}

【问题讨论】:

  • 您是否收到任何错误报告
  • 它给了我编译错误,因为 FirstTest 类中没有定义“test”变量。如果我定义它,那么我将如何从 ExtentListener 类中获取 ExtentTest 的实例?
  • 你试过我建议的答案了吗
  • 如果问题从答案中得到解决,请将答案标记为已接受。谢谢

标签: java testing selenium-webdriver automation testng


【解决方案1】:

在第 13 行的 Class ExtentListener 中,实例“test”被创建为“private”,这是一个访问修饰符,它将仅限制类本身的可见性。所以尝试将访问修饰符更改为 public。

refer 使用适合您要求的访问修饰符。 希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    相关资源
    最近更新 更多