package io.vertx.ext.unit.junit;

import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;

import java.util.concurrent.TimeUnit;

A rule for configuring the tests timeout.
Author:Julien Viet
/** * A rule for configuring the tests timeout. * * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */
public class Timeout implements TestRule {
Params:
  • millis – the timeout value in milli seconds
Returns:a new timeout rule
/** * @param millis the timeout value in milli seconds * @return a new timeout rule */
public static Timeout millis(long millis) { return new Timeout(millis, TimeUnit.MILLISECONDS); }
Params:
  • seconds – the timeout value in seconds
Returns:a new timeout rule
/** * @param seconds the timeout value in seconds * @return a new timeout rule */
public static Timeout seconds(long seconds) { return new Timeout(seconds, TimeUnit.SECONDS); } private final long value; public Timeout(long value, TimeUnit unit) { this.value = unit.toMillis(value); } @Override public Statement apply(Statement base, Description description) { return new Statement() { @Override public void evaluate() throws Throwable { VertxUnitRunner.pushTimeout(value); try { base.evaluate(); } finally { VertxUnitRunner.popTimeout(); } } }; } }