BeforeOrAfterFailed.java
package org.jbehave.core.failures;
import static java.text.MessageFormat.format;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
/**
* Thrown when methods, annotated with before or after annotations (story or scenario),
* fail.
*/
@SuppressWarnings("serial")
public class BeforeOrAfterFailed extends RuntimeException {
public BeforeOrAfterFailed(Method method, Throwable cause) {
super(format("Method {0} (annotated with {1} in class {2}) failed: {3}", method.getName(),
toAnnotationNames(method.getAnnotations()), method.getDeclaringClass().getName(), cause), cause);
}
private static String toAnnotationNames(Annotation[] annotations) {
List<String> names = new ArrayList<>();
for (Annotation annotation : annotations) {
names.add("@" + annotation.annotationType().getSimpleName());
}
return StringUtils.join(names, ",");
}
public BeforeOrAfterFailed(Throwable cause) {
super(cause);
}
}