##### Coverage Report - org.jbehave.core.failures.BeforeOrAfterFailed

Classes in this File | Line Coverage | Branch Coverage | Complexity
BeforeOrAfterFailed |
75% | 6/8
100% | 2/2
| 1.3333333333333333;1.333

1 |  |
     package org.jbehave.core.failures;
2 |  |
3 |  |
     import java.lang.annotation.Annotation;
4 |  |
     import java.lang.reflect.Method;
5 |  |
     import java.util.ArrayList;
6 |  |
     import java.util.List;
7 |  |
8 |  |
     import org.apache.commons.lang.StringUtils;
9 |  |
10 |  |
     import static java.text.MessageFormat.format;
11 |  |
12 |  |
     /**
13 |  |
      * Thrown when methods, annotated with before or after annotations (story or scenario),
14 |  |
      * fail.
15 |  |
      */
16 |  |
     @SuppressWarnings("serial")
17 |  |
     public class BeforeOrAfterFailed extends RuntimeException {
18 |  |
19 |  |
         public BeforeOrAfterFailed(Method method, Throwable cause) {
20 | 4 |
             super(format("Method {0} (annotated with {1} in class {2}) failed: {3}", method.getName(), toAnnotationNames(method.getAnnotations()), method.getDeclaringClass().getName(), cause), cause);
21 | 4 |
         }
22 |  |
23 |  |
         private static String toAnnotationNames(Annotation[] annotations) {
24 | 4 |
             List<String> names = new ArrayList<String>();
25 | 7 |
             for (Annotation annotation : annotations) {
26 | 3 |
                 names.add("@"+annotation.annotationType().getSimpleName());
27 |  |
             }
28 | 4 |
             return StringUtils.join(names, ",");
29 |  |
         }
30 |  |
31 |  |
         public BeforeOrAfterFailed(Throwable cause) {
32 | 0 |
             super(cause);
33 | 0 |
         }
34 |  |
     }