Eclipse Junit 选项卡每次都通过,而控制台选项卡中存在异常
Eclipse Junit tab is getting passed every time while exceptions are there in Console tab
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
调试时我看到发生了异常,错误收集器捕获了它。
因此,错误收集器应该在 junit 选项卡中打印它,因为 printStackTrace() 函数正在控制台选项卡中打印。
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)
这是关于 ErrorCollector 的异常,它在我传递 error.getMessage().substring(0, 10)
的子字符串时给出错误
嘿,我刚刚发现我必须在@Rule 注释下使用我自己现有的 ErrorCollector class,我所做的是我已经创建了另一个 java Errorcollector class 在被覆盖的 class 之上。
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
调试时我看到发生了异常,错误收集器捕获了它。 因此,错误收集器应该在 junit 选项卡中打印它,因为 printStackTrace() 函数正在控制台选项卡中打印。
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)
这是关于 ErrorCollector 的异常,它在我传递 error.getMessage().substring(0, 10)
的子字符串时给出错误嘿,我刚刚发现我必须在@Rule 注释下使用我自己现有的 ErrorCollector class,我所做的是我已经创建了另一个 java Errorcollector class 在被覆盖的 class 之上。