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

Как сделать unit test запуститься в папке bin

Я пытаюсь получить доступ к файлу в моей структуре решения во время unit test. Мой проект unit test имеет bin\Debug\ как выходной каталог. Поэтому я написал код, предполагающий, что Path.GetFullPath(".") в моем unit test даст мне эту папку bin. Но то, что он делает, это дает мне временное местоположение в качестве пути.

C:\Users\[username]\AppData\Local\Temp\TestResults\[username]_[machine_name] 2013-05-16 08_31_07\Out

Таким образом, очевидно, что мой unit test не смог получить доступ к файлам в моем решении. Если кто-нибудь знает, как сделать unit test запуск в папке bin проекта unit test, пожалуйста, помогите.

4b9b3361

Ответ 1

Вы можете сделать это с помощью файла .runsettings и установки <DeploymentEnabled>false</DeploymentEnabled>. См. Раздел "Примечания" здесь. Однако вы не можете это сделать, если используете файл .testsettings, и если вы хотите проверить любые файлы, которые ваши тесты читают или записывают после неудачного прогона, возможно, вам это не удастся, поскольку они могут быть испорченные дальнейшими испытаниями и т.д.

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

[DeploymentItem(@"source", @"target")]
public void Test1() {}

Где источник - это либо путь к выходной папке сборки, либо абсолютный путь, а target - это либо путь, по которому выполняются тесты, либо абсолютный путь. Вы можете оставить целевой параметр вне, в этом случае он примет цель ".", То есть папку, в которой выполняются тесты. Документы для этого здесь

Ответ 2

Другим вариантом, который может вам подойдет, является использование NUnit вместо MSTest. В этом случае тесты выполняются в каталоге bin\debug

Ответ 3

Это обновление для любого, кто может столкнуться с этой проблемой с помощью Visual Studio 2015. Конгруэнт к @guysherman, у меня есть папка Solution Items в файле Solution в моем обозревателе решений, и должен быть файл .testrunconfig. Если вы открываете его с помощью Visual Studios, "Включить развертывание" - это флажок вверху, который вы можете снять.

У меня была та же проблема, когда мои тесты были развёртыванием .dll в папку TestRun каждый раз, когда я запускал модульные тесты, но файл .config, который был включен в исполняемый файл, ссылается на другой файл common.config, который не развертывался со всем else, поэтому я никогда не подключался к моему SQL-серверу, потому что это было указано в файле common.config. Если снять флажок "Включить развертывание", мои тесты выполнялись прямо из папки bin, указанной в проекте.

Ответ 4

Если вы пытаетесь получить доступ к файлам или ресурсам, которые вы предполагаете, находятся в папке по умолчанию, вы можете попытаться предоставить им явный каталог местоположения сборки. Пример:

string dataSource = AppDomain.CurrentDomain.BaseDirectory + "TestDb.mdb";

AppDomain.CurrentDomain.BaseDirectory обычно разрешает фактическое местоположение сборки, что и планировалось.