Должны ли классы unit test храниться под контролем версий с остальной частью кода?

Если я создаю набор тестов для проекта разработки, должны ли эти классы храниться под контролем версий с остальной частью кода проекта?

Ответ 1

Да, нет причин не ставить их в исходный контроль. Что делать, если тесты меняются? Что делать, если интерфейсы меняются, что требует изменения тестов?

Ответ 2

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

Это классик, где и почему:

  • Кто изменил код?
  • Когда они меняли его?
  • Зачем они меняли?

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

Ответ 3

Совершенно верно. Тестовые классы должны оставаться в курсе кода. Это означает, что он проверяет и запускает тесты при непрерывной интеграции.

Ответ 4

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

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

Ответ 5

Модульные тесты должны быть привязаны к базе кода в вашем репозитории.

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

Ответ 6

Действительно, да. Как кто-нибудь мог подумать иначе?

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

Ответ 7

Да, они должны. Люди, проверяющие последний выпуск, должны иметь unit test код на своей машине. Это поможет определить недостающие зависимости и также может предоставить им неофициальную документацию о том, как работает код.

Ответ 8

Да.

Тестовый код - это код. Он должен поддерживаться, реорганизоваться и версироваться. Это часть источника вашей системы.

Ответ 9

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

Ответ 10

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

Ответ 11

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

Ответ 12

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

Кроме того, тестовые модули должны храниться как можно ближе к фактическому тестируемому коду (нижняя часть того же файла кажется стандартным). Это так же удобно, как и для обслуживания.

Для некоторого дополнительного чтения о том, что делает хороший unit test, просмотрите fooobar.com/questions/12925/....

Ответ 13

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

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