MSTest: Написание модульных тестов с TestContext - PullRequest
1 голос
/ 14 декабря 2010

Я нахожусь в процессе написания некоторых модульных тестов, которые создают файлы.

В настоящее время я использую TestContext TestResultsDirectory для хранения созданного файла (результаты утверждаются). Синтаксис выглядит так:

        //Create directory
        Directory.CreateDirectory(TestContext.TestResultsDirectory);

        //Create file.
        File.Create(TestContext.TestResultsDirectory + @"\Test.txt");

Мой вопрос в основном, почему TestResultsDirectory не создается?

Когда я просто звоню File.Create, проверка завершается неудачно с DirectoryNotFoundException.

Это правильный способ использования TestContext или есть какие-либо атрибуты, такие как [SetPath], которые мы можем установить на уровне метода, чтобы среда выполнения создала "тестовые" пути?

Ответы [ 3 ]

3 голосов
/ 25 сентября 2015

Я знаю, что это старая ветка, но я только сейчас сам узнаю об этом, и я наткнулся на ответ на ваш вопрос о папке TestResultsDirectory во время игры с автоматизированным тестированием Visual Studio. Может быть, это поможет кому-то еще.

TestResultsDirectory создано , только не во время теста. (@Kevin, наличие GUID для имени не имеет ничего общего с тем, можно ли создать папку, если вы на это намекаете.) Я следил за созданием файлов и папок во время выполнения теста, и папка не создается до после выхода кода пользователя .

При запуске теста, когда захватывается экранное видео (ScreenCapture.wmv) или создается журнал действий (UITestActionLog.html), файлы результатов помещаются в TestResultsDirectory после его создания , что только после того, как ваш код закончен. Если ваш тест не создает эти или похожие файлы результатов, эта папка, скорее всего, не будет создана.

Как я уже сказал, я все еще изучаю тестирование Visual Studio.

ОБНОВЛЕНИЕ: я обнаружил, что при записи видео или журнала действий они, похоже, сохраняются в памяти до завершения теста. Похоже, именно поэтому выходная папка создается после выхода кода пользователя.

Если я узнаю больше по этой теме (и если сайт позволяет мне - можете ли вы отредактировать ответ более одного раза?), Я обновлю этот ответ.

1 голос
/ 13 сентября 2013

Вы, вероятно, хотите использовать TestContext.ResultsDirectory. Кажется, это указывает на каталог, который фактически создается.

TestContext.TestResultsDirectory не создается (в нем находится папка GUID), поэтому вы получаете DirectoryNotFoundException.

1 голос
/ 15 сентября 2011

Я никогда не использую TestContext.В этом случае я бы использовал Environment.CurrentDirectory:

    //Create directory
    Directory.CreateDirectory(Path.Combine(Environment.CurrentDirectory, "SubDirectory"));

    //Create file.
    File.Create(Path.Combine(Environment.CurrentDirectory, "Test.txt"));
...