Eclipse Junit tab is getting passed every time while exceptions are there in Console tab

82 Views Asked by At

java.lang.AssertionError at org.junit.Assert.fail(Assert.java:86) at org.junit.Assert.assertTrue(Assert.java:41) at org.junit.Assert.assertTrue(Assert.java:52) at com.bt.panorama.ip.widgets.trading.OrderStatus.verifyOrdersRange(OrderStatus.java:64) at com.bt.panorama.ip.widgets.trading.OrderStatus.searchByDateRange(OrderStatus.java:49)

> org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":".//div[@class='mvc-orderstatuses']//tr[@class='no-results-row']"}

Command duration or timeout: 10.11 seconds For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html Build info: version: '2.45.0', revision: '5017cb8e7ca8e37638dc3091b2440b90a1d8686f', time: '2015-02-27 09:10:26' System info: host: 'WV001768', ip: '10.13.12.184', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_09' *** Element info: {Using=xpath, value=.//div[@class='mvc-orderstatuses']//tr[@class='no-results-row']} Session ID: e3ea478d-1150-44c9-81aa-ce73573ed864 Driver info: org.openqa.selenium.firefox.FirefoxDriver

While debugging I am able to see that an exception occurred and Error collector captured it. Hence error collector should have print it in junit tab as printStackTrace() function is printing in console tab.

try
    {
        errList.add(error);
        File scrFile = ((TakesScreenshot)InstantiateDriver.getDriver()).getScreenshotAs(OutputType.FILE);
        String folder = System.getProperty("browserType");
        if (folder == null)
        {
            folder = "firefox";
        }

        String dt = new SimpleDateFormat("yyyy-MMM-dd").format(new Date()).trim();
        String envpath = System.getProperty("envpath");


        String imageFileDir;
        if (null == envpath)
        {
            imageFileDir = ".\\HTMLreport\\" + dt + "\\" + "html\\screenshots\\" + folder; // System.getProperty("selenium.screenshot.dir");
        }
        else
        {
            imageFileDir = ".\\HTMLreport\\" + dt + "\\" + envpath + "\\" + "html\\screenshots\\" + folder; 
        }

        File fle = new File(imageFileDir);
        if (!fle.exists())
        {
            fle.mkdirs();
        }

        if (imageFileDir == null)
            imageFileDir = System.getProperty("java.io.tmpdir");
        try
        {
            String str = "";
            if (error.getMessage() != null)
                if (error.getMessage().length() > 10)
                    str = error.getMessage().substring(0, 10);
                else
                    str = error.getMessage().substring(0, error.getMessage().length() - 1);
            String methodname = error.getStackTrace()[0].getMethodName();
            String className = error.getStackTrace()[0].getClassName();
            StackTraceElement[] el = error.getStackTrace();
            for (int i = 0; i < el.length; i++)
            {
                if (el[i].getMethodName().startsWith("test"))
                {
                    methodname = el[i].getMethodName();
                    className = el[i].getClassName();
                    break;
                }

            }
            str = methodname + "_" + str;
            //eleminate '/' and spaces in the file name
            str = str.trim().replace("/", "-").replace(" ", "_").replace("'", "_").replace(":", "_");
            String fileName = str + "_" + (count++) + ".png";
            File file = new File(imageFileDir, fileName);
            FileUtils.copyFile(scrFile, file);

            String scRelativePath = "screenshots\\\\" + folder + "\\\\" + fileName;

            String errorString = error.getMessage();
            if (null != getExecMethod())
            {
                errorString = getExecMethod() + " : " + errorString;
            }
            String linkScreenShot = " - " + className + " # "
                + "<a escape=\"true\"  href=\"javascript:displayScreenshotLink(\'" + scRelativePath
                + "\');\">Click here for screenshot</a>";
            errorString = errorString + " " + linkScreenShot;
            if (error instanceof AssertionError)
                error = new AssertionError(errorString, error);

            else
                error = new Throwable(errorString, error);

        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
    catch (Exception ex)
    {
        ex.printStackTrace();
    }
    super.addError(error);

java.lang.NullPointerException at helpers.ErrorCollectorImpl.addError(ErrorCollectorImpl.java:85) at com.bt.panorama.ip.tests.Trading.BusinessScenarios.ValidateOrder.testDuplicateOrderErrorMessage(ValidateOrder.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

this is exception regarding ErrorCollector its giving error where I am passing substring of error.getMessage().substring(0, 10)

1

There are 1 best solutions below

0
On BEST ANSWER

Hey there I just figured out that I had to use my own existing ErrorCollector class under @Rule annotation and what I have done is I have created one more object of java Errorcollector class on top of class which was getting override.