Search in sources :

Example 1 with SpringFailOnTimeout

use of org.springframework.test.context.junit4.statements.SpringFailOnTimeout in project spring-framework by spring-projects.

the class SpringJUnit4ClassRunner method withPotentialTimeout.

/**
	 * Perform the same logic as
	 * {@link BlockJUnit4ClassRunner#withPotentialTimeout(FrameworkMethod, Object, Statement)}
	 * but with additional support for Spring's {@code @Timed} annotation.
	 * <p>Supports both Spring's {@link org.springframework.test.annotation.Timed @Timed}
	 * and JUnit's {@link Test#timeout() @Test(timeout=...)} annotations, but not both
	 * simultaneously.
	 * @return either a {@link SpringFailOnTimeout}, a {@link FailOnTimeout},
	 * or the supplied {@link Statement} as appropriate
	 * @see #getSpringTimeout(FrameworkMethod)
	 * @see #getJUnitTimeout(FrameworkMethod)
	 */
@Override
@SuppressWarnings("deprecation")
protected Statement withPotentialTimeout(FrameworkMethod frameworkMethod, Object testInstance, Statement next) {
    Statement statement = null;
    long springTimeout = getSpringTimeout(frameworkMethod);
    long junitTimeout = getJUnitTimeout(frameworkMethod);
    if (springTimeout > 0 && junitTimeout > 0) {
        String msg = String.format("Test method [%s] has been configured with Spring's @Timed(millis=%s) and " + "JUnit's @Test(timeout=%s) annotations, but only one declaration of a 'timeout' is " + "permitted per test method.", frameworkMethod.getMethod(), springTimeout, junitTimeout);
        logger.error(msg);
        throw new IllegalStateException(msg);
    } else if (springTimeout > 0) {
        statement = new SpringFailOnTimeout(next, springTimeout);
    } else if (junitTimeout > 0) {
        statement = FailOnTimeout.builder().withTimeout(junitTimeout, TimeUnit.MILLISECONDS).build(next);
    } else {
        statement = next;
    }
    return statement;
}
Also used : Statement(org.junit.runners.model.Statement) SpringFailOnTimeout(org.springframework.test.context.junit4.statements.SpringFailOnTimeout)

Aggregations

Statement (org.junit.runners.model.Statement)1 SpringFailOnTimeout (org.springframework.test.context.junit4.statements.SpringFailOnTimeout)1