При непрерывной интеграции, выполняющей тесты при каждом коммите, общепринятой практикой является постоянное прохождение всех тестов (иначе говоря, «не нарушайте сборку»).
Я нахожу некоторые проблемы с этим:
Например, нельзя помочь проекту с открытым исходным кодом, создав тесты, соответствующие заявкам. Я знаю, что если я предложу запрос на извлечение для проекта с открытым исходным кодом, содержащего провальный тест, сборка будет помечена как неудачная, и проект не будет хотеть, чтобы это слилось с его репозиторием, потому что он "нарушит сборку".
И я не верю, что плохо иметь неудачные тесты в вашем репо , это все равно, что иметь открытые проблемы в вашем трекере. Это просто вещи, ожидающие исправления.
То же самое и в компании. Если вы работаете с TDD, вы не можете писать тесты, фиксировать, а затем писать логический код, который выполняет тест. Это означает, что если я написал 4-5 тестов на своем ноутбуке, я не смогу выполнить их до отпуска. Никто не может забрать мою работу. Я даже не могу «поделиться» ими с коллегой, кроме как, например, отправив их по электронной почте. Это также не позволяет работать одному человеку, пишущему тесты, а другому - моделирующему.
Все это говорит, я неправильно использую / неправильно понимаю процесс сборки / непрерывную интеграцию? Мне кажется, что «прохождение» / «не прохождение» является слишком узким показателем.
Есть ли способ сделать непрерывную интеграцию и совместимую с TDD?
Может быть, существует стандартное решение / практика, позволяющая различать «новые тесты» (которые могут провалиться) и «регрессионные тесты» (которые не должны давать сбой, потому что они привыкли работать)?