001    package org.junit.runners.model;
002    
003    import java.util.concurrent.TimeUnit;
004    
005    /**
006     * Exception thrown when a test fails on timeout.
007     * 
008     * @since 4.12
009     * 
010     */
011    public class TestTimedOutException extends Exception {
012    
013        private static final long serialVersionUID = 31935685163547539L;
014    
015        private final TimeUnit timeUnit;
016        private final long timeout;
017    
018        /**
019         * Creates exception with a standard message "test timed out after [timeout] [timeUnit]"
020         * 
021         * @param timeout the amount of time passed before the test was interrupted
022         * @param timeUnit the time unit for the timeout value
023         */
024        public TestTimedOutException(long timeout, TimeUnit timeUnit) {
025            super(String.format("test timed out after %d %s", 
026                    timeout, timeUnit.name().toLowerCase()));
027            this.timeUnit = timeUnit;
028            this.timeout = timeout;
029        }
030    
031        /**
032         * Gets the time passed before the test was interrupted
033         */
034        public long getTimeout() {
035            return timeout;
036        }
037    
038        /**
039         * Gets the time unit for the timeout value
040         */
041        public TimeUnit getTimeUnit() {
042            return timeUnit;
043        }
044    }