Мы пытаемся использовать Feign + Ribbon в одном из наших проектов. В производственном коде у нас нет проблем, но у нас есть несколько в тестах JUnit.
Мы пытаемся смоделировать ряд ситуаций (сбой служб, нормальный запуск, исключения и т. д.), поэтому нам нужно много раз настраивать ленту в нашем интеграционном тесте. К сожалению, мы заметили, что даже когда мы уничтожаем контекст Spring, часть состояния все еще сохраняется, вероятно, где-то в статических переменных (например: новые тесты все еще подключаются к балансировщику из предыдущего набора).
Есть ли рекомендуемый способ, как очистить статическое состояние обоих этих инструментов? (что-то вроде Hystrix.reset()
)
Заранее спасибо!
Мы пробовали сбрасывать JVM после каждого пакета — он отлично работает, но не очень практичен (мы должны настроить его как в Gradle, так и в Idea (поскольку тестовый тюнер Idea не поддерживает это из коробки)). Мы также пробовали переименовывать службу между тестами - это работает, скажем, на 99% (иногда по какой-то причине происходит сбой...).
@SpringBootTest
, имеющие отдельный контекст приложения Spring с разными свойствами, затронуты, поскольку клиент Feign использует конфигурацию, каким-то образом кэшированную Ribbon/Feign (?) во время выполнения первого из таких тестов. Все тесты при запуске один за другим корректны. - person Krzysztof Tomaszewski   schedule 29.09.2020