Автор оригинала: 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 Это правило также применяется в отношении @Раньше и @После методы.
Рекомендации
Оригинал: “https://mkyong.com/unittest/junit-4-tutorial-4-time-test/”