Рубрики
Без рубрики

log4j2.xml Тест JUnit – Тайм-аут

– JUnit – Тест тайм-аута

Автор оригинала: mkyong.

Если для завершения теста требуется больше времени, чем заданный “тайм-аут”, будет вызвано исключение TestTimedOutException , и тест помечен как неудачный. См. Следующий пример:

P.S Протестировано с JUnit 4.12

1. Пример тайм-аута

Этот пример timeout применим только к одному методу тестирования. А значение тайм-аута указано в миллисекундах.

package com.mkyong;

import org.junit.Test;

public class TimeoutTest {

    //This test will always failed :)
    @Test(timeout = 1000)
    public void infinity() {
        while (true) ;
    }

    //This test can't run more than 5 seconds, else failed
    @Test(timeout = 5000)
    public void testSlowMethod() {
        //...
    }

}

Этот тест тайм-аута полезен для проверки производительности метода.

2. Пример Правила глобального тайм-аута

В этом примере показано, как создать глобальное правило тайм-аута, это правило будет применяться ко всем методам тестирования в классе.

package com.mkyong;

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.Timeout;

import java.util.concurrent.TimeUnit;

public class TimeoutRuleTest {

    //global timeout rule
    @Rule
    public Timeout globalTimeout = Timeout.seconds(1);

	//This test will be failed, because it will take more than 1 second to finish!
    @Test
    public void testSlowMethod1() throws InterruptedException {
        //...
        TimeUnit.SECONDS.sleep(5000);
    }

	//passed
    @Test
    public void testSlowMethod2() {
        //...
    }

}

В приведенном выше примере объявлено глобальное Тайм-аут правило, как тестовый медленный метод 1() и тестовый медленный метод 2() должен завершить тест в течение 1 секунды, иначе тест будет провален.

P.S Это правило также применяется в отношении @Раньше и @После методы.

Рекомендации

  1. @Тестовый JavaDoc
  2. Правило тайм-аута JavaDoc

Оригинал: “https://mkyong.com/unittest/junit-4-tutorial-4-time-test/”