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