2009-08-14 3 views
8

Несколько вопросов:Единичные тесты в коде выпуска продукции?

1.) Вы используете код для испытаний кода?

2.) Если да, то оставите ли вы эти модульные тесты неповрежденными, чтобы сами тесты существовали в производственной среде?

Я вижу значение в # 1, но разве это «хорошая практика» для создания зависимостей в производстве, например, для сборки NUnit?

Оставьте свои мысли.

ответ

14
  1. Абсолютно. Если наша сборка проходит блок тестов, то это маркированный и кандидата на производство
  2. No. развертываний не включают в себя тесты, ни вспомогательные библиотеки (например, библиотеки, тестовые единицы, насмешливые и т.д.)

Выше мое общее правило (обычно я использую нетехнические пользователи). Однако у меня есть исключение, которое представляет собой программную утилиту, которая тестируется с помощью ~ 130 тестовых скриптов. Поскольку тестовые скрипты дублируются в качестве примеров, я развертываю их вместе с производственной версией и, следовательно, улучшаю существующую документацию.

Развертывание тестов с открытым исходным кодом, безусловно, стоит того. Это позволяет людям играть, изменять и отправлять патчи, в то же время имея возможность запускать тесты, которые успешно прошли, чтобы разрешить выпуск оригинального артефакта.

7

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

+1

+1 и я удалил свой лишний ответ. – Abizern

+0

Согласны, что сборка релизов должна проходить модульные тесты ... но развертывать единую тестовую платформу вместе с производственным кодом? –

2
  1. Да, конечно! Модульные тесты выполняются во всех конфигурациях сборки.

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

2
  1. Да, помните классическое «Assert с побочными эффектами» ошибка, которая должна быть пойманной, а также. Но этого не нужно делать так часто, как сборка отладки, где полный тест должен выполняться каждый день.
  2. Обычно блок-тесты находятся в разных единицах перевода и в другом проекте, так что выпускная сборка основного проекта вообще не затрагивает их. Если ваши модульные тесты находятся в тех же единицах перевода, что и проверенный код, вы можете использовать условную компиляцию, чтобы исключить их из выпусков.
1

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

Независимо от того, установлены ли они для производства, это другая проблема. Я не работал над проектом, который нужен их там.Модель развертывания Rails - это (обычно) просто проверка всего проекта на производственной машине, так что да, они есть. Проекты Java/Maven имеют целый шаг сборки/упаковки, и, как правило, модульные тесты могут ... и удаляются при создании окончательного файла .war.

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

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