1 package org.junit.internal; 2 3 import org.hamcrest.Description; 4 import org.hamcrest.Matcher; 5 import org.hamcrest.SelfDescribing; 6 import org.hamcrest.StringDescription; 7 8 /** 9 * An exception class used to implement <i>assumptions</i> (state in which a given test 10 * is meaningful and should or should not be executed). A test for which an assumption 11 * fails should not generate a test case failure. 12 * 13 * @see org.junit.Assume 14 */ 15 public class AssumptionViolatedException extends RuntimeException implements SelfDescribing { 16 private static final long serialVersionUID = 2L; 17 18 /* 19 * We have to use the f prefix until the next major release to ensure 20 * serialization compatibility. 21 * See https://github.com/junit-team/junit/issues/976 22 */ 23 private final String fAssumption; 24 private final boolean fValueMatcher; 25 private final Object fValue; 26 private final Matcher<?> fMatcher; 27 28 /** 29 * @deprecated Please use {@link org.junit.AssumptionViolatedException} instead. 30 */ 31 @Deprecated 32 public AssumptionViolatedException(String assumption, boolean hasValue, Object value, Matcher<?> matcher) { 33 this.fAssumption = assumption; 34 this.fValue = value; 35 this.fMatcher = matcher; 36 this.fValueMatcher = hasValue; 37 38 if (value instanceof Throwable) { 39 initCause((Throwable) value); 40 } 41 } 42 43 /** 44 * An assumption exception with the given <i>value</i> (String or 45 * Throwable) and an additional failing {@link Matcher}. 46 * 47 * @deprecated Please use {@link org.junit.AssumptionViolatedException} instead. 48 */ 49 @Deprecated 50 public AssumptionViolatedException(Object value, Matcher<?> matcher) { 51 this(null, true, value, matcher); 52 } 53 54 /** 55 * An assumption exception with the given <i>value</i> (String or 56 * Throwable) and an additional failing {@link Matcher}. 57 * 58 * @deprecated Please use {@link org.junit.AssumptionViolatedException} instead. 59 */ 60 @Deprecated 61 public AssumptionViolatedException(String assumption, Object value, Matcher<?> matcher) { 62 this(assumption, true, value, matcher); 63 } 64 65 /** 66 * An assumption exception with the given message only. 67 * 68 * @deprecated Please use {@link org.junit.AssumptionViolatedException} instead. 69 */ 70 @Deprecated 71 public AssumptionViolatedException(String assumption) { 72 this(assumption, false, null, null); 73 } 74 75 /** 76 * An assumption exception with the given message and a cause. 77 * 78 * @deprecated Please use {@link org.junit.AssumptionViolatedException} instead. 79 */ 80 @Deprecated 81 public AssumptionViolatedException(String assumption, Throwable e) { 82 this(assumption, false, null, null); 83 initCause(e); 84 } 85 86 @Override 87 public String getMessage() { 88 return StringDescription.asString(this); 89 } 90 91 public void describeTo(Description description) { 92 if (fAssumption != null) { 93 description.appendText(fAssumption); 94 } 95 96 if (fValueMatcher) { 97 // a value was passed in when this instance was constructed; print it 98 if (fAssumption != null) { 99 description.appendText(": "); 100 } 101 102 description.appendText("got: "); 103 description.appendValue(fValue); 104 105 if (fMatcher != null) { 106 description.appendText(", expected: "); 107 description.appendDescriptionOf(fMatcher); 108 } 109 } 110 } 111 } 112