Базовый каталог тестового проекта Visual Studio

Я хочу провести некоторое тестирование взаимодействия в своем тестовом проекте и хотел бы протестировать некоторые компоненты на основе конфигурации xml... Как я могу найти базовый каталог тестового проекта в коде, чтобы я мог создавать пути относительно него? Я хочу иметь подпапку, содержащую тестовые xml-файлы.

Спасибо

РЕДАКТИРОВАТЬ:

Iv использовал Assembly.GetExecutingAssembly().Location, который дает выходную папку того времени, когда я запускал тесты. Мне нужно настроить файлы xml для перехода со сборками в этот каталог.. как я могу это сделать?


person theringostarrs    schedule 14.12.2009    source источник


Ответы (3)


System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

Вы получите путь к файлу приложения, который вы можете использовать для загрузки файлов XML в его каталог.

Если вы говорите строго о папке проекта, предполагая, что она находится в bin\debug, просто добавьте «....\» в конец.

person Brett Allen    schedule 14.12.2009
comment
Iv использовал Assembly.GetExecutingAssembly().Location, который дает выходную папку того времени, когда я запускал тесты. Мне нужно настроить файлы xml для перехода со сборками в этот каталог.. как я могу это сделать? - person theringostarrs; 14.12.2009
comment
Это будет работать только для непосредственно загруженных сборок. Сборки, переданные в потоковом режиме из удаленных расположений, будут возвращать URI, а не путь к файлу. Просто к вашему сведению. - person GrayWizardx; 14.12.2009

Вы должны иметь возможность использовать относительные пути к корню вашего проекта; например: doc.Load(@"somedir\my.xml");. Вопрос в том, какой тестовый фреймворк вы используете? С NUnit большинство исполнителей тестов (в среде IDE, таких как TestDriven.NET, R# и т. д.) просто используют свойства элемента проекта. Поэтому убедитесь, что «Копировать в выходной каталог» стоит «Копировать всегда» или «Копировать, если новее».

Для встроенного средства запуска MSTest, которое поставляется с некоторыми SKU VS, все обстоит иначе; вы можете использовать либо testrunconfig, либо атрибуты вашего тестового приспособления, чтобы сообщить ему, что развертывать. Что глупо, имхо. Для testrunconfig дважды щелкните testrunconfig и выберите "Развертывание", затем "Добавить файл..."; для атрибутов вы хотите [DeploymentItem] - как в:

[TestClass, DeploymentItem(@"foo\bar.xml")]
public class SomeTestClass {
    ...
}
person Marc Gravell    schedule 14.12.2009

Я предполагаю, что Application.StartupPath у вас тоже не сработает?

Может быть, есть какое-то требование, которое я пропустил, но есть ли какая-то причина, по которой вы не можете просто указать тестам, куда поместить вывод?

person Cory Charlton    schedule 14.12.2009