В настоящее время у меня есть проблема с ожиданием, с которой я никогда не сталкивался: мой набор тестов завершается сбоем после вызова Awaitility.await()
У меня есть 31 тест в моем проекте SpringBoot. В одном из них было Thread.sleep
Я хотел рефакторинг.
После добавления awaitility появилась ошибка:
java.lang.RuntimeException: Suite replaced Thread.defaultUncaughtExceptionHandler. It's better not to touch it. Or at least revert it to what it was before. Current: class org.awaitility.core.CallableCondition$1
at com.carrotsearch.randomizedtesting.RandomizedRunner.runSuite(RandomizedRunner.java:650)
at com.carrotsearch.randomizedtesting.RandomizedRunner.run(RandomizedRunner.java:496)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.testcontainers.containers.FailureDetectingExternalResource$1.evaluate(FailureDetectingExternalResource.java:30)
at org.testcontainers.containers.FailureDetectingExternalResource$1.evaluate(FailureDetectingExternalResource.java:30)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
После нескольких часов попыток исправить эту проблему, я попытался «обмануть», создав фальшивку Thread.sleep
с ожиданием:
Awaitility.await().pollDelay(Duration.ONE_SECOND).until(() -> true);
Но это ничего не изменило.
После введения Awaitility я заметил, что у меня теперь 32 тестов. «Новый 32-й тест» после прочтения верного отчета - это сам класс:
<testcase name="fr.bibi.tests.ElasticSearch" classname="fr.bibi.tests.ElasticSearch" time="3.169">
Я понятия не имею, как исправить эту проблему. Awaitility отлично работает в других maven модулях того же проекта.
Пока я застрял с моим Thread.sleep
в моем тесте ...
Спасибо за вашу помощь!