Как сделать так, чтобы autospec/test не запускал полный набор тестов после того, как все стало зеленым?

Тот же вопрос, что и waloeiii в твиттере:

Как сделать так, чтобы autospec / test не запускал полный набор тестов после того, как все стало зеленым? Следующий тест, который я напишу, будет красным!

Я бы предпочел запустить полный набор тестов вручную.

Кстати, я попытался добавить сбой спецификации:

it "should flunk" do
  flunk
end

но autospec, кажется, игнорирует его, когда хочется.

4 ответа

Решение

Немного поздно, но я тоже искал это, поэтому подумал, что выложу свое решение:

Добавьте следующее в ~/.autotest:

class Autotest
  def rerun_all_tests
  end
end

Вы можете использовать следующую опцию, чтобы избежать этого поведения -

autospec --no-full-after-failed

Вы уверены, что вас не смущает предполагаемое поведение эвристики автотеста?

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

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

Если вы хотите изменить это поведение, вам нужно отредактировать эвристику в rails_autotest.rb файл для Zentest.

Я думаю, что это сделано специально - если вы исправляете ошибочную спецификацию, а все остальные спецификации в этом разделе зеленые, то autospec перезапустит весь пакет - это скажет вам, если исправление, примененное вами к одной области вашего проекта, имеет b0rked другой или нет.

Если вы просто хотите одновременно запустить спецификации, над которыми работаете, вы можете сделать это из командной строки:

ruby spec/controllers/my_spec.rb

или из Textmate, нажав cmd + r из вашего spec-файла. В любом случае вы должны перезапустить весь свой пакет, так как в противном случае у вас могут отсутствовать ошибочные спецификации.

Другие вопросы по тегам