Во-первых, имеет смысл поместить модульные тесты в отдельную сборку от самого тестируемого кода.Я знаю, что это, вероятно, очевидно, но я хочу сказать об этом, чтобы не было путаницы, когда вы говорите о размещении тестов в той же папке, что и проект.Вам не нужны ваши модульные тесты в развернутом производственном коде, поэтому они должны находиться в отдельной сборке.Поэтому я рекомендую отдельный проект модульного тестирования, который компилируется в отдельную сборку.Это соответствует указаниям и примерам Microsoft.
Самый простой вариант - создать проект модульного тестирования, в котором есть ссылки на другие проекты, которые вы хотите протестировать.Это гарантирует, что все сборки, на которые ссылаются эти проекты, будут доступны для модульных тестов.Visual Studio может получать доступ к тестам во многих различных структурах, но если вы выполняете сборку через TFS и выполняете тесты как часть сборки, вам необходимо убедиться, что сервер сборки сможет разрешить все ссылки во всех ваших проектах:не только проект модульного тестирования.Хороший способ сделать это - создать папку «справочная библиотека» для вашего решения и скопировать любые сторонние библиотеки DLL, на которые вы собираетесь ссылаться (обязательно добавьте эти файлы в решение, даже если их еще никто не использует).
После того, как библиотеки DLL скопированы в эту папку и добавлены в решение, вы должны добавить ссылки на библиотеки DLL из этой же папки.Затем, когда вы запускаете сборку на сервере сборки, библиотеки DLL всегда будут находиться на том же относительном пути на сервере сборки, как и на вашей собственной машине, когда вы сначала добавляли ссылку.Ссылки хранятся в проектах с относительными путями, поэтому будущие разработчики (и машина сборки) смогут разрешать ссылки и не получат проблем с неработающими ссылками, когда получат доступ к коду и попытаются скомпилировать его дляв первый раз.
Мне нравится создавать отдельный проект модульного теста для моего решения, затем в рамках этого проекта модульного теста создаю отдельную папку (возможно, отдельное пространство имен) для каждого из проектов, которые я тестирую.Например, если в моем решении есть проект BusinessLogic и проект Helper - оба из которых содержат код, который я хочу выполнить модульным тестом, - у меня был бы один проект модульного тестирования, содержащий две папки: BusinessLogic и Helpers.Тесты для каждого проекта будут сгруппированы в соответствующую папку.