Skip to content

Latest commit

 

History

History

modify_global

Изменение глобального состояния

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

Проблемы

Состояние системы меняется в зависимости от порядка выполнения тестов (недопустимо!), если тесты не убирают за собой. От этого ломаются посторонние тесты, попадающие в неожиданное состояние системы.

Теория

Тесты могут выполняться в разном порядке (сюрприз!). У разработчика тесты могут быть зелёными, т.к. выполнялись строго последовательно. Но при Continuous Integration тесты могут запускаться в параллель, приводя к тому, что начинают краснеть тесты, которые рассчитывали на глобальные значения, которые поменялись в предыдущих тестах.

Что делать

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