Есть ли хороший способ отладки ошибок тестов, зависящих от порядка, в RSpec (RSpec2)?

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

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

rspec test1_spec.rb test2_spec.rb # failures in test2
rspec test2_spec.rb test1_spec.rb # no failures

В RSpec 1 были некоторые параметры (--reverse, --loadby) для заказа тестовых прогонов, но они исчезли в RSpec 2 и были минимально в любом случае полезно при отладке этих проблем.

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

Я не нашел таких утилит в RSpec, поэтому я Я спрашиваю здесь: Какие хорошие способы нашли люди для отладки этих типов ошибок тестов, зависящих от порядка?

15
задан mmrobins 10 May 2011 в 06:26
поделиться