Search code examples
javaloggingextentreportsextent

Error while printing Arraylist using ExtentReports


I am trying to print Array-list using extent reports. But its giving me error "The method log(LogStatus, Throwable) in the type ExtentTest is not applicable for the arguments (LogStatus, ArrayList)"

I am trying to print Array-list b using extent reports. But its giving me the error "The method log(LogStatus, Throwable) in the type ExtentTest is not applicable for the arguments (LogStatus, ArrayList)"

Below is my code and I get error "Listeners.test.log(b);" here

import org.testng.annotations.BeforeMethod;
import pages.tablepage;
import utilities.Base;
import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;

public class Store extends Base{

        @BeforeMethod
        public void initialize() throws IOException {
            driver = initializeDriver();
            Log.info("Driver is initialized");
            driver.get(prop.getProperty("url3"));
        }
        @Test
        public void Sorting() {

            //constructor from Page Object
            tablepage P = new tablepage(driver);

            //page numbers
            int c =  P.page().size();

            //defining lists
            ArrayList<String> b = new ArrayList<String>();

            //Storing values to a List
            for (int i=1;i<=c;i++) {
               int s = P.name().size();
               for(int j=0;j<s;j++) {
               b.add(P.name().get(j).getText());
              }
              if(i<c) {
                 P.page().get(i).click();
                }
            }

            Listeners.test.log(LogStatus.INFO,"---List---" + c); //this prints fine

            Listeners.test.log(b); //this is not working

}
}

I want it to print

---List--- 4

[Junior Technical Author, Chief Executive Officer (CEO), Accountant, Software Engineer, Software Engineer, Integration Specialist, Javascript Developer, Senior Javascript Developer, Regional Director, Pre-Sales Support, Personnel Lead, Sales Assistant, Chief Operating Officer (COO), Developer, Systems Administrator, Accountant, Sales Assistant, Senior Marketing Designer, Development Lead, Regional Director, Office Manager, Integration Specialist, Marketing Designer, Chief Financial Officer (CFO), Support Lead, Integration Specialist, Developer, Software Engineer, Regional Marketing, Regional Director, System Architect, Chief Marketing Officer (CMO)]

But now it just print : ---List--- 4

Here is my Listeners file:

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

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

public class Listeners implements ITestListener {

     protected static WebDriver driver;
     protected static ExtentReports reports;
     public static ExtentTest test;
     Base B = new Base();

    public void onTestStart(ITestResult result) {
         System.out.println("Test Started");
          test = reports.startTest(result.getMethod().getMethodName());

         }


    public void onTestSuccess(ITestResult result) {
        System.out.println("Test Success\n");

         }

    public void onTestFailure(ITestResult result) {
        System.out.println("Test Failed\n");
          test.log(LogStatus.FAIL, result.getMethod().getMethodName() + " test failed");
          try {

            //getScreenshot();
}

    public void onStart(ITestContext context) {
          driver = new ChromeDriver(); 
          reports = new ExtentReports(""Extentreports.html");       
    }

    public void onFinish(ITestContext context) {

          reports.flush();

    }

}

Solution

  • @ShehNathMishra helped me to figure out ArrayList cannot be an arhument for extent reports.

    Converting the Arraylist to a String builder and then to a string helped. Below is the fixed code:

     StringBuilder sb = new StringBuilder(); 
                for (String s : b)
                {
                    sb.append(s);
                    sb.append("\t");
                }
    
                //Sorting the list
                Listeners.test.log(LogStatus.INFO,"--- List---");
                Listeners.test.log(LogStatus.INFO,sb.toString());