Я растущий программист, который наконец применяет модульное тестирование на практике для библиотеки, которую я храню на GitHub.
Мне пришло в голову, что я могу включить тестовые наборы в репозиторий, но когда я смотрю на другие проекты, включение тестов кажется хитом или пропуском.
Это считается плохой формой? Является ли идея, что пользователи интересуются только рабочим кодом и что они все равно будут тестировать в своей собственной среде?
version-control
unit-testing
parisminton
источник
источник
Ответы:
Вы обязательно должны положить свои тесты в хранилище. Тесты, по моему мнению, являются частью кода и могут очень помочь другим понять их (если они хорошо написаны). Кроме того, они могут помочь другим при изменении или внесении вклада в вашу кодовую базу. Хорошие тесты могут дать вам уверенность в том, что ваши изменения ничего не нарушат.
Однако тестовый код должен быть хорошо отделен от рабочего кода. Например, Maven достигает этого, помещая рабочий и тестовый код в разные папки. Вопрос «является ли этот файл частью производственного или тестового кода» никогда не должен возникать.
Лично я не пишу модульные тесты для используемых библиотек в своем собственном коде. Я ожидаю, что они будут работать (по крайней мере, когда я использую версию выпуска, хотя ошибки, очевидно, могут появиться). Он получает некоторое тестовое покрытие в интеграционных тестах, но этого недостаточно.
источник
Если вы не включите модульные тесты в зарегистрированный исходный код, то:
В итоге, я считаю, что не включать какие-либо модульные тесты, написанные в официальном репозитории исходного кода, очень плохо.
источник
Конечно, вы должны поместить в хранилище модульные тесты по нескольким причинам:
источник
Если есть возможность запустить их на другом компьютере, обязательно включите их. Они должны создаваться отдельно, поэтому пользователям это не нужно, и у них могут быть дополнительные зависимости, но они обязательно должны быть включены.
Я сильно подозреваю, что большинство проектов, которые не включают тесты в хранилище, просто не имеют их.
Может быть причина иметь тесты как отдельный модуль, чтобы вы могли легко запускать новые тесты со старым кодом. Это было бы полезно для API-стабильной библиотеки или тестов черного ящика через командную строку; Полезность для компилируемых языков, где новые тесты, вероятно, не будут компилироваться со старым кодом, ограничена.
источник
Абсолютно. Дополнительные бонусные баллы заключаются в возможности отслеживать, что версия X исходного файла соответствует версии Y теста. Другими словами, вы должны иметь возможность вернуться к предыдущей версии и получить соответствующие тесты, разработанные для этой версии (в случае изменения API или некоторого такого).
источник
Я только что закончил читать «Разработка приложений Brownfield в .Net» , и это дает некоторые отличные рекомендации по структуре приложения, включая контроль исходного кода и где / как / почему включать модульные тесты (особенно в области непрерывной интеграции). , Если вы разработчик .Net, я бы порекомендовал это.
источник