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