Управление версиями и разработка через тестирование

В Swift 2.2:

let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedLast.rawValue).rawValue
let colorSpace = CGColorSpaceCreateDeviceRGB()
let context = CGBitmapContextCreate(nil, Int(width), Int(height), 8, 0, colorSpace, bitmapInfo)
7
задан Andrew Grimm 4 June 2009 в 00:34
поделиться

6 ответов

Пара вещей:

  1. После рефакторинга теста вы снова запускаете тест
  2. Затем вы реорганизуете код, затем снова запускаете тест
  3. Затем вы не делаете Не нужно регистрироваться сразу, но вы можете

В TDD нет смысла добавлять успешный тест. Это пустая трата времени. У меня было искушение сделать это, чтобы увеличить покрытие кода, но этот код должен был быть покрыт тестами, которые на самом деле сначала провалились.

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

1
ответ дан 7 December 2019 в 16:45
поделиться

Просто храните свои тесты и код в отдельных каталогах, а затем вы можете проверить одну версию тестов и другую версию кода.

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

Я также сомневаюсь в мотивации для этого? Если это делается для того, чтобы сначала "принудительно провести" неудачный тест, то я хотел бы указать вам на этот комментарий от отца (продвижения) TDD.

1
ответ дан 7 December 2019 в 16:45
поделиться

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

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

0
ответ дан 7 December 2019 в 16:45
поделиться

Есть ли что-нибудь, что позволяет проверьте ревизию x тестового кода, и доработка Х-1 производства кода и убедитесь, что тесты, которые вы написано в ревизии x fail?

Я думаю, что вы ищете ключевое слово непрерывная интеграция . Есть много инструментов, которые фактически реализованы как перехватчики после фиксации в системах управления версиями (то есть что-то, что запускается на серверах / в центральном репозитории после каждой фиксации): например, они будут запускать ваши модульные тесты после каждой фиксации и отправлять коммиттерам по электронной почте, если ревизия вводит регрессию.

Такие инструменты прекрасно способны определять, какие тесты являются новыми и никогда не проходили из старых тестов, которые раньше проходили, а которые в настоящее время не проходят из-за недавнего commit, что означает, что использование TDD и непрерывной интеграции в целом прекрасно: вы, вероятно, сможете настроить свои инструменты так, чтобы они не кричали, когда вводится новый неудачный тест, и жаловались только на регрессии.

Как всегда, Я направлю вас в Википедию для общего введения по теме . И более подробным, довольно известным ресурсом может быть статья Мартина Фаулера

0
ответ дан 7 December 2019 в 16:45
поделиться

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

В TDD вы всегда наблюдайте за ошибкой теста перед его прохождением, чтобы вы знали, что он работает.

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

Но все же следите за тем, чтобы тест провалился.

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

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

Но все же следите за тем, чтобы тест провалился.

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

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

Но все же следите за тем, чтобы тест провалился.

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

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

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

1
ответ дан 7 December 2019 в 16:45
поделиться

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

Затем вы можете добавить другие тесты, убедиться, что они также не прошли, git commit , git merge , а затем запустить тесты с текущей базой кода, чтобы проверить, работа, которую вы уже проделали, приведет к успешной сдаче теста, или если вам теперь нужно сделать еще какую-то работу.

0
ответ дан 7 December 2019 в 16:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: