Интеграционный тест с бесконечным циклом - PullRequest
0 голосов
/ 26 мая 2020

Мне нужно запустить интеграционный тест, но, имея некоторые проблемы, я знаю, что первое, что люди скажут, что я прочитал в других ответах, - это извлечь то, что находится в бесконечном l oop, в метод и проверить это, но это не так просто, поскольку мы заранее создаем некоторые вещи, которые используются в l oop во время выполнения с фабрики, и я хочу протестировать весь поток приложения с помощью интеграционного теста.

while (true) {
    retrieveMessage();
}

I хотите получить одно сообщение, которое я отправил, а затем выйти (только из теста интеграции, а не из запущенного приложения при развертывании).

Я думал о том, чтобы сделать что-то вроде

if ("test".equals(getSpringActiveProfile()) {
   break;
}

Но это было бы плохой практикой, если бы он записывал в мою кодовую базу специально для теста?

Любые идеи или мысли приветствуются .

Спасибо

1 Ответ

1 голос
/ 26 мая 2020

В общем, программа должна иметь «естественный» способ выхода, бесконечные циклы сами по себе являются запахом кода ... Я бы поискал такой подход:

boolean keepRunning = true; //even better as private field, then your class can get a "public void stop() { keepRunning = false; } method or something similar...
while(keepRunning) {
    //do whatever you need
}

Это можно контролировать по вашему тесту и в продуктивном коде его можно использовать для уничтожения приложения, когда приходит какое-то событие-убийство, очищающее все ...

...