Должны ли классы модульных тестов находиться под контролем версий вместе с остальным кодом? - PullRequest
11 голосов
/ 22 сентября 2008

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

Ответы [ 13 ]

29 голосов
/ 22 сентября 2008

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

4 голосов
/ 22 сентября 2008

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

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

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

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

3 голосов
/ 22 сентября 2008

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

2 голосов
/ 22 сентября 2008

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

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

1 голос
/ 22 сентября 2008

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

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

1 голос
/ 22 сентября 2008

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

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

0 голосов
/ 22 сентября 2008

Да, по всем вышеуказанным причинам, также, если вы используете сервер непрерывной интеграции, который «отслеживает» ваш контроль версий, вы можете запускать последние модульные тесты при каждом коммите.

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

0 голосов
/ 22 сентября 2008

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

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

Дополнительную информацию о том, что делает хороший модульный тест, можно найти в этом сообщении stackoverflow .

0 голосов
/ 22 сентября 2008

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

0 голосов
/ 22 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...