Продолжить выполнение кода после запуска процесса powershell - PullRequest
0 голосов
/ 04 мая 2018

Я хочу сделать следующее в тесте XUnit:

  • запустить скрипт PS для запуска сайта на IIS
  • вернитесь в тестовый класс и выполните набор тестов Selenium для сайта

Я могу достаточно легко запустить сайт через PS, но процесс блокируется - если я закрою окно PS, тест XUnit продолжится, но IIS, очевидно, остановился, поэтому тест не пройден.

Как запустить процесс IIS и продолжить тест? Мой скрипт PS ниже.

$iisExpressExe = '"c:\Program Files\IIS Express\iisexpress.exe"'
$path = "..\..\..\.vs\config\applicationhost.config"
$site = "SITE NAME"
$apppool = "Clr4IntegratedAppPool"
$params = "/config:$path /site:$site"
get-process | where { $_.ProcessName -like "IISExpress" } | stop-process
$command = "$iisExpressExe $params"
cmd /c start cmd /k "$command"

И вызывающий C #:

    string script = File.ReadAllText("Boot.ps1");
    PowerShell shell = PowerShell.Create();

    shell.AddScript(script);
    shell.BeginInvoke();

    Thread.Sleep(2000);

    _driver = new ChromeDriver
    {
        Url = "http://localhost:56565/umbraco"
    };

    // do tests here

    _driver.Dispose();
    shell.Stop();

Это работает, но не утилизирует оболочку ...

1 Ответ

0 голосов
/ 04 мая 2018

Создать новый поток и запустить скрипт ps из этого потока. Затем подождите несколько секунд с помощью метода Thread.Sleep () в основном потоке, чтобы iis запустил сайт и начал тестировать селен.

Альтернативный способ решения проблемы BeginInvoke() async метод, если вы знакомы с асинхронными методами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...