2017-08-11 5 views
0

Ich schreibe Nunit Tests auf Mac. Ich muss einen Prozess (Server) starten, wenn Tests ausgeführt werden. Das Problem besteht darin, dass der Test erst abgeschlossen wird, wenn der Serverprozess nicht beendet wird. Basic Test Runner steckt fest und ich muss Visual Studio neu starten. Der Serverprozess beginnt in Visual Studio, aber ich möchte, dass es in einem Terminal ist. Ich brauche diesen Prozess, um auch nach Abschluss der Tests aktiv zu sein.Startvorgang in Visual Studio 2017 auf Mac

appProcess.StartInfo.UseShellExecute = true; 
       appProcess.StartInfo.FileName = "AppiumServer/node_modules/appium/appium"; 
       appProcess.StartInfo.Arguments = "--port " + port; 
       appProcess.Start(); 

Appium ist ein Bash-Skript mit Knoten AppiumServer/main.js. Ich habe versucht, es ohne bash zu starten, aber wenn ich fileName auf Terminal und Argumente auf "node AppiuumServer/main.js - port" + Port setzte, würde Knoten-Server aber auf falschem Port beginnen. Kannst du mir helfen?

appium bash

#!/bin/sh 
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") 

case `uname` in 
    *CYGWIN*) basedir=`cygpath -w "$basedir"`;; 
esac 

if [ -x "$basedir/node" ]; then 
    "$basedir/node" "$basedir/../appium/build/lib/main.js" "[email protected]" 
    ret=$? 
else 
node "$basedir/../appium/build/lib/main.js" "[email protected]" 
ret=$? 
fi 
exit $ret 

Antwort

0

Ok ich eine Lösung gefunden. Schreiben Sie osascript, um Appium in einem Terminal zu starten und von Visual Studio aus zu starten. Dann können Sie den Port mit Argumenten übergeben und auf bash $ 0 $ 1 usw. zugreifen. Der so gestartete Server startet außerhalb von Visual Studio und blockiert NUnity-Tests nicht. Das mit osaskript gestartete Terminal wird automatisch geschlossen.

#!/bin/bash 
osascript -e 'tell application "Terminal" to do script 
"'$1'/AppiumServer/node_modules/appium/appium --port '$2''"' 

Wobei $ 1 Pfad und $ 2 Port ist. "Appium" ist ein Bash-Skript, mit dem Knoten "Pfad main.js"

Und in C# es wie folgt beginnen:

Process appProcess = new Process(); 
appProcess.StartInfo.UseShellExecute = true; 
appProcess.StartInfo.FileName = "path to osascript"; 
appProcess.StartInfo.Arguments = "path to appium script this will be in 
$1"+" 8000"; 
appProcess.Start(); 

8000 ist Port natürlich, dass in $ 2 sein wird. Ich hoffe, es wird jemandem helfen, der ein ähnliches Problem hat.

Verwandte Themen