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