Иногда требуется поставить таймаут на все тесты. Можно, конечно, к каждой аннотации @Test добавить параметр timeout. Но что делать, если тестов много в классе ?
Поэтому мы будем использовать Rule для таймаут.
Пример:

public class JU {

	@Rule
	public TestName name = new TestName();

	@Rule
	public MethodRule globalTimeout = new Timeout(1000);
	
	@Test
	public void c1() throws Exception {
		System.out.println(name.getMethodName());		
	}

	@Test
	public void a2() throws Exception {
		System.out.println(name.getMethodName());	
		Thread.sleep(1500);
	}

	@Test
	public void a1() throws Exception {
		System.out.println(name.getMethodName());
		Thread.sleep(1500);
	}

}

Здесь методы a1() и a2() будут провалены, т.к. мы ждем 1.5 секунды, а Rule дает только 1 секунду на выполнение метода.

Реклама