Я должен написать модульные тесты и интеграционные тесты для проекта.
- Все тесты должны быть помещены в одну папку тестов ?
- Или юнит-тесты и интеграционные тесты должны находиться в отдельной папке тестов ?
- Или я должен даже поместить их в отдельные проекты ?
Если я буду держать их вместе, есть ли какие-либо преимущества или недостатки этого подхода?
architecture
unit-testing
integration-tests
Ахмед Рагхеб
источник
источник
Ответы:
В целом: да, вы должны поместить интеграционные тесты и модульные тесты в разные папки. Часто программисты не проводят четкой грани между этими двумя типами тестов и просто пишут какой-либо тип теста, который будет полезен. Но интеграционные тесты, как правило, медленнее, потому что они часто включают в себя:
В отличие от этого, модульное тестирование могло бы подделать любые дорогостоящие операции, поэтому модульные тесты, как правило, выполняются быстро (на самом деле, самой медленной частью выполнения теста часто является сама структура теста).
Когда программист работает в системе, он находится в цикле редактирования-тестирования. Чем быстрее они получат тестовую обратную связь и чем короче цикл, тем более продуктивными они могут быть. Таким образом, мы хотим запустить только важный тест, который завершится быстро. Полный набор тестов будет выполняться только как часть процесса обеспечения качества, например, на сервере CI.
Это означает, что большие тестовые наборы должны быть классифицированы. Можно ли выбирать модульные тесты только для определенного компонента? Можем ли мы исключить медленные тесты? Один простой способ сделать это - поддерживать разные наборы тестов в разных каталогах. Если у вас очень мало тестов, один каталог также будет в порядке, если программист может легко выбрать подмножество тестов.
Все, что позволяет программисту быстро получать обратную связь, хорошо. Самый полный набор тестов не имеет значения, если он не выполняется регулярно.
Дальнейшее чтение:
источник