Подтвердить что ты не робот

Записывать модульные тесты в сборку или в отдельный сборник?

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

4b9b3361

Ответ 1

У меня есть одно решение с проектом интерфейса, проектом испытаний, проектом домена и проектом данных. Когда я выпускаю, я просто публикую интерфейс, который не ссылается на тесты, поэтому он не компилируется.

Изменить: Суть в том, что вы не хотите, чтобы он был частью вашей окончательной версии. Вы можете добиться этого автоматически в VS, используя отдельный проект/сборку. Однако вы можете иметь его в одной сборке, но тогда просто не компилируйте этот код, если используете nant или msbuild. Бит беспорядок, хотя держите вещи в порядке, используйте отдельную сборку:)

Ответ 2

Это широко обсуждается по всей сети.

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

Ответ 3

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

Оставьте тестовый код в развертывании:

  • раздувает код без каких-либо реальных преимуществ - все эти дополнительные теги кода, которые не будут использоваться вообще на месте.
  • влияет на релизы. Вы выпускаете новую версию полного приложения. когда то, что вы улучшили, только в тестовом коде, например. набор тестов расширяется в результате исправления ошибок.
  • вы не можете легко повторно использовать тестовую среду в другом проекте - если вы всегда выпускаете приложение, которое забито тестовым кодом, любые последующие проекты должны повторно использовать один и тот же тестовый код. В противном случае вы закончите ситуацию, когда приложение A использует v1.2 тестовой платформы для этих аспектов приложения. которые являются общими для всех ваших приложений, например. уровень презентации или инфраструктуру бизнес-логики и т.д. И приложение. B использует v1.1 тестовой структуры, приложение. C использует v1.2.1 и т.д.

Развязка с другой стороны позволяет вам:

  • легко обновлять и расширять набор тестов по мере необходимости.
  • легко повторно использовать набор тестов для нескольких проектов.
  • используйте общую тестовую среду для нескольких проектов.

НТН

веселит,

Rob

Ответ 4

В другой сборке. В противном случае ваша сборка будет ссылаться на тестовую среду (например, Nunit.Framework.dll), и вам нужно будет установить ее на машине клиента,

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

Ответ 5

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