2010-04-30 5 views
0

Ради этого вопроса, я не забочусь о разнице между пни, издевается, Соски, подделками и т.д.контроля версий - окурки и издевается

Допустим, я работаю над проектом с одним другая личность. Я работаю над компонентом A, и он работает над компонентом B. Они работают вместе, поэтому я заканчиваю B для тестирования, и он заглушает A. Мы работаем в DVCS, скажем Git, потому что это на самом деле Вот.

Когда приходит время объединить наши компоненты вместе, нам нужно получить «реальные» файлы с моего A и его B, но выбросить все поддельные вещи. Во время разработки, вероятно, (если мне не нужно узнать, как правильно заглушить вещи), что подделки имеют те же имена файлов и имена классов, что и настоящие.

Итак, мой вопрос: что такое правильная процедура для контроля версий на подделках и как компоненты правильно сливаются, не забудьте ли захватить реальную вещь, а не подделку? Я бы предположил, что один из способов - это просто слияние, ожидайте, что он скажет CONFLICT, а затем вручную удалит весь поддельный код из файлов с половиной слияния. Но это звучит утомительно и неэффективно.

Должны ли поддельные вещи не находиться под VC вообще? Должны ли они быть вырваны непосредственно перед слиянием? Извините, если ответ на это должен быть очевиден или тривиальным, я просто ищу «предлагаемую практику» здесь.

Редактирование: дополнительная информация, которую я не понимал, окажет важное значение. Я специально говорю о веб-разработке, более конкретно, я не говорю о разработке .NET. Моя история, похоже, заблуждала людей в этом отношении.

ответ

1

Так в основном это положение (чтобы убедиться, что я правильно понять):

  • Юнит-тесты для компонента А написаны против поддельных Bs компонентов
  • Компонент B не был готов, но теперь это
  • Вы хотите, чтобы реорганизовать тесты использовать реальный компонент B вместо фальшивок

Я бы на самом деле не рекомендуя делать это последний шаг. Я бы оставил существующие модульные тесты для A, написанные против поддельных Bs, так как предполагается, что они будут тестировать A. Теперь, когда A и B готовы, я бы написал новый набор интеграция тесты, которые проверяют взаимодействие между A и B.

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

1

Подделки все еще должны находиться в контроле источника, возможно, под другим пакетом/пространством имен, чтобы использоваться модульными испытаниями. Имейте интеграционные тесты, которые используют как реальных компонентов, но сохраняют единичные тесты изолированными.

Ваш производственный код должен относиться к интерфейсам или абстрактным базовым классам и иметь внедренные реализации, чтобы вы могли использовать подделки для тестирования, но производственные классы для реальной вещи.

0

Существует файл .gitignore для git, который позволяет вам не включать файлы в ваш источник управления.

Также вы должны использовать динамический макет, если это возможно. Для .NET что-то вроде Rhino.Mock или Moq позволяет вам программно делать mocks вместо хранения файлов & подделки.

+1

Иногда издеваются лучше, иногда подделки - это лучше всего. Это зависит от ситуации. Для тестирования протокола макеты действительно удобны, но во многих других случаях может быть очень раздражающим, чтобы «запрограммировать» макет, когда вы просто хотите, чтобы он действовал очевидным образом. –

+0

Я знаю о .gitignore и info/exclude. Вопрос в том, нужно ли его использовать. Я также немного обновлю свой вопрос. – Tesserex

Смежные вопросы