Ожидание провоцирует кра sh тестов - PullRequest
0 голосов
/ 08 апреля 2020

В настоящее время у меня есть проблема с ожиданием, с которой я никогда не сталкивался: мой набор тестов завершается сбоем после вызова 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 в моем тесте ...

Спасибо за вашу помощь!

...