001    package junit.framework;
002    
003    import org.junit.internal.Throwables;
004    
005    
006    /**
007     * A {@code TestFailure} collects a failed test together with
008     * the caught exception.
009     *
010     * @see TestResult
011     */
012    public class TestFailure {
013        protected Test fFailedTest;
014        protected Throwable fThrownException;
015    
016        /**
017         * Constructs a TestFailure with the given test and exception.
018         */
019        public TestFailure(Test failedTest, Throwable thrownException) {
020            fFailedTest = failedTest;
021            fThrownException = thrownException;
022        }
023    
024        /**
025         * Gets the failed test.
026         */
027        public Test failedTest() {
028            return fFailedTest;
029        }
030    
031        /**
032         * Gets the thrown exception.
033         */
034        public Throwable thrownException() {
035            return fThrownException;
036        }
037    
038        /**
039         * Returns a short description of the failure.
040         */
041        @Override
042        public String toString() {
043            return fFailedTest + ": " + fThrownException.getMessage();
044        }
045        
046        /**
047         * Returns a String containing the stack trace of the error
048         * thrown by TestFailure.
049         */
050        public String trace() {
051            return Throwables.getStacktrace(thrownException());
052        }
053    
054        /**
055         * Returns a String containing the message from the thrown exception.
056         */
057        public String exceptionMessage() {
058            return thrownException().getMessage();
059        }
060    
061        /**
062         * Returns {@code true} if the error is considered a failure
063         * (i.e. if it is an instance of {@code AssertionFailedError}),
064         * {@code false} otherwise.
065         */
066        public boolean isFailure() {
067            return thrownException() instanceof AssertionFailedError;
068        }
069    }