4

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

  • MyProject/MyProject.csproj
  • MyProject.Test/MyProject.Test.csproj

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

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

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

Благодаря

+1

Там есть аналогичный вопрос здесь :) http://stackoverflow.com/questions/1116488/how-do-you-setup-your-unit-test-projects-in-net/1116577#1116577 –

ответ

4

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

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

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

2

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

Решение папки папки

  • ProjectA папки
  • ProjectA.Test папки
  • ProjectB папки
  • ProjectB.Test
+0

Это наша новая схема в офисе. – Tangurena

1

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

3

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

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

Projectname/филиалы/ствол/проекты/код/​​codeproject1
Projectname/филиалы/ствол/проекты/код/​​codeproject2
Projectname/филиалы/ствол/проекты/код/codeproject3
Projectname/филиалы/ствол/проекты/тесты/testproject1
Projectname/филиалы/ствол/Зависимости Projectname/прототипы
Projectname/...

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

codeproject1/
codeproject2/
codeproject2/веб
codeproject2/веб/MVC
codeproject3/
codeproject3/поддержка

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