Вопрос

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

  • Мой проект/MyProject.csproj
  • MyProject.Test/MyProject.Test.csproj

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

В настоящее время у меня есть логика msbuild для запуска тестов для всех файлов *.Test.csproj.Если бы у меня были все мои тесты в другой папке, мне бы не нужно было этого делать.

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

Спасибо

Это было полезно?

Решение

Я делаю это таким же образом но Я изменяю пространство имен по умолчанию для каждого тестового проекта, чтобы оно соответствовало пространству имен производственного проекта.Итак, тесты для класса X.Y.Foo находятся в X.Y.FooTest вместо того , чтобы X.Y.Test.FooTest - это означает, что вам нужно меньше использовать директивы, и в целом все упрощается.

Моя главная причина, по которой я хочу сохранить эти два проекта в отдельных проектах, заключается в том, чтобы избежать включения тестов в производственную библиотеку или необходимости отправлять непроверенную библиотеку.Благодаря отдельной структуре проекта вы можете запускать модульные тесты для всего, что вы создаете.Это также упрощает просмотр только производственных классов без необходимости просматривать в два раза больше файлов (при получении "ощущения" библиотеки).

Наконец, не забывайте, что если вам нужно получить доступ internal участники при тестировании всегда есть [InternalsVisibleTo].

Другие советы

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

Вот структура каталогов, которую я использую:

Имяпроекта/ветви/ магистраль/проекты/код/codeproject1
Имяпроекта/ветви/ магистраль/проекты/код/codeproject2
Имяпроекта/ветви/ магистраль/проекты/код/codeproject3
Имяпроекта/ветви / магистраль/проекты/ Тесты/testproject1
Имяпроекта/ветви/ магистраль/ Зависимости Имяпроекта/прототипы
Имя проекта/...

и внутри testproject1 следующая структура каталогов:

кодпроект1/
кодпроект2/
codeproject2/веб-проект
codeproject2/web/mvc
кодпроект3/
codeproject3/поддержка

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

Папка с решением

  • Папка ProjectA ( проект )
  • Проект.Папка для тестов
  • Папка ProjectB
  • ProjectB.Папка для тестирования

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top