001package org.junit.runners.model;
002
003import java.util.concurrent.TimeUnit;
004
005/**
006 * Exception thrown when a test fails on timeout.
007 * 
008 * @since 4.12
009 * 
010 */
011public 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}