2016-05-25 12 views
0

Ich mache einige UI-Tests in meiner iOS-App, aber ich sehe ein seltsames Verhalten.Swift - Warum Process.arguments leeres Array zurückgibt

In meiner setUp() Methode füge ich einige Werte zu XCUIApplication().launchArguments, aber wenn ich abfragen, um die Startargumente zu sehen, bekomme ich und leere Array.

Dies ist, wie meine setUp() Methode wie folgt aussieht:

override func setUp() { 
    super.setUp() 

    let application = XCUIApplication() 
    application.launchArguments = ["USE_SERVER_DEBUG"] 
    application.launch() 
} 

Dies ist die Funktion, die Process.arguments nennt die Argumente abzurufen

func checkArguments(){ 
    let launchArguments = Process.arguments 
    for index in 0 ..< launchArguments.count { 
     let argument = launchArguments[index] as String 

     if argument.compare("USE_DEBUG_SERVER") == NSComparisonResult.OrderedSame { 
      // Do something 
     } 
    } 
    return true 
} 
+0

Ich weiß nichts über Automatisierung, aber überprüfen Sie diese Antwort aus. Es scheint, dass Sie möglicherweise nicht auf den richtigen Prozess zugreifen. http://StackOverflow.com/a/33335994/1671729 – Putz1103

Antwort

0

Ich bin nicht sicher, ob Process Ihre eigene Klasse ist oder ein Tippfehler, aber Sie sollten NSProcessInfo verwenden.

if NSProcessInfo.processInfo().arguments.contains("USE_SERVER_DEBUG") { 
    // Do something 
} 

Auch ich in der Regel gegen empfehlen die Einführung Argumente zu setzen. Stattdessen sollten Sie an sie anhängen. Aber das ist mehr eine Best-Practice als alles andere.

application.launchArguments += "USE_SERVER_DEBUG" 
+0

"Prozess" ist Swift "Befehlszeilenargumente für den aktuellen Prozess". – Moritz