org.testng.SkipException Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of testng Show documentation
Show all versions of testng Show documentation
Testing framework for Java
package org.testng;
/**
* The root exception for special skip handling. In case a @Test or @Configuration
* throws this exception the method will be considered a skip or a failure according to the
* return of {@link #isSkip()}.
* Users may provide extensions to this mechanism by extending this class.
*
* @author Alex Popescu
* @since 5.6
*/
public class SkipException extends RuntimeException {
private static final long serialVersionUID = 4052142657885527260L;
private StackTraceElement[] m_stackTrace;
private volatile boolean m_stackReduced;
public SkipException(String skipMessage) {
super(skipMessage);
}
public SkipException(String skipMessage, Throwable cause) {
super(skipMessage, cause);
}
/**
* Flag if the current exception marks a skipped method (true)
* or a failure (false). By default Subclasses should override this method
* in order to provide smarter behavior.
*
* @return true if the method should be considered a skip,
* false if the method should be considered failed. If not
* overwritten it returns true
*/
public boolean isSkip() {
return true;
}
/**
* Subclasses may use this method to reduce the printed stack trace.
* This method keeps only the last frame.
* Important: after calling this method the preserved internally
* and can be restored called {@link #restoreStackTrace}.
*/
protected void reduceStackTrace() {
if(!m_stackReduced) {
synchronized(this) {
StackTraceElement[] newStack= new StackTraceElement[1];
StackTraceElement[] originalStack= getStackTrace();
if(originalStack.length > 0) {
m_stackTrace= originalStack;
newStack[0]= getStackTrace()[0];
setStackTrace(newStack);
}
m_stackReduced= true;
}
}
}
/**
* Restores the original exception stack trace after a
* previous call to {@link #reduceStackTrace()}.
*
*/
protected void restoreStackTrace() {
if(m_stackReduced && null != m_stackTrace) {
synchronized(this) {
setStackTrace(m_stackTrace);
m_stackReduced= false;
}
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy