Каков наилучший метод тестирования «бесконечных циклов»?

3 ответа

Вы не можете проверить это то, что работает вечно.

Когда вы сталкиваетесь с фрагментом кода, который трудно (или невозможно) протестировать, вы должны: -

  • Рефакторинг изолировать труднодоступную для тестирования часть кода. Сделайте непроверяемые части крошечными и тривиальными. Прокомментируйте, чтобы они не расширились позже, чтобы стать нетривиальными
  • Провести модульное тестирование других частей, которые теперь отделены от труднодоступной для испытания секции
  • Сложная для испытания деталь будет охвачена интеграционный или приемочный тест

Если основной цикл в вашей игре проходит только один раз, это сразу станет очевидным при запуске.

3
ответ дан 28 November 2019 в 23:33
поделиться

:) У меня был этот запрос несколько месяцев назад.

Короткий ответ: нет простого способа проверить это. Вы тестируете драйв по внутренностям петли. Затем вы добавляете это в метод цикла & amp; выполните ручную проверку того, что цикл работает, пока не произойдет условие завершения.

0
ответ дан 28 November 2019 в 23:33
поделиться

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

Класс с бесконечным циклом:

class Scheduling::Daemon
  def run
    loop do
      if daemon_received_stop_signal?
        break
      end

      # do stuff
    end
  end
end

спецификация, проверяющая поведение цикла:

describe Scheduling::Daemon do
  describe "#run" do
    before do
      Scheduling::Daemon.should_receive(:daemon_received_stop_signal?).
        and_return(false, true)  # execute loop once then exit
    end      

    it "does stuff" do
      Scheduling::Daemon.run  
      # assert stuff was done
    end
  end
end
0
ответ дан 28 November 2019 в 23:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: