2016-12-30 3 views
1

У меня есть проект проекта проекта и библиотеки. Я хочу использовать файл pdf в проекте библиотеки в качестве шаблона. Когда я использую Environment.CurrentDirectory, я получаю путь к единичному тестовому проекту, но хочу, чтобы путь проекта библиотеки ссылался на файл pdf.Как получить путь в папке проекта из модульного теста

Path.Combine(Environment.CurrentDirectory, "../PDFs/template.pdf"); 

Что такое эквивалентный оператор, чтобы получить путь к файлу в проекте библиотеки при выполнении модульного теста?

ответ

1

Вы не можете. В модульном тестовом проекте есть копия ссылочной сборки в ее папке bin и , которая не знает об исходном «исходном» местоположении (и не должна).

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

Единственный способ решить поставленную задачу - обеспечить, чтобы ваш файл «template.pdf» был скопирован в выходной каталог модульного теста, возможно, с шагом после сборки. Гораздо лучший подход состоял бы в том, чтобы просто включить шаблон в проект модульного тестирования.

+0

После того, как я добавлю шаблон для тестирования проекта, как было предложено, я использовал следующий оператор, чтобы получить путь Path.GetFullPath (Path.Combine (Environment.CurrentDirectory, "../../PDFs/template.pdf")) – billboard

+0

@ billboard Похоже, что это сработает (опять-таки, вероятно, в какой-то момент должен найти другой метод ...), вы считали, что я должен включить это в свой ответ? – BradleyDotNET

+0

Прежде чем отметить это как ответ, у меня есть следующий вопрос, поэтому бесполезно хранить шаблоны в библиотеке. Потому что никто из библиотек не может получить доступ к файлам, я прав? В таком случае существует вероятность, что клиент использует неправильный шаблон, и библиотека будет генерировать исключение. – billboard

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