Verwendung eines URL-Schemas in XCTestCase

8

Ich möchte einen Test ausführen, der auf die Antwort eines Browsers wartet.

Ein Testziel hat eine Info.plist, wo ich benutzerdefinierte URL-Schemata registrieren kann. Aber diese werden nie genannt. Ich weiß, dass ein Testziel keine echte Anwendung ist.

Gibt es einen Weg?

BEARBEITEN (für Kopfgeld): Ich möchte einen Integrationstest für eine Klasse schreiben, die openUrl("tel://" + some phone number) aufruft. Wie abonniere ich dieses URL-Schema in einem XCTestCase?

    
McZonk 06.10.2014, 20:25
quelle

2 Antworten

1

Die Frage wurde erneut an OS X gesendet, sodass meine Antwort nicht mehr gültig ist

Ursprüngliche Antwort

Das ist unmöglich. Der Hauptgrund ist, dass die Tests mit einer laufenden Anwendungsinstanz verbunden sind, sie haben keine Kontrolle über das Gerät, sie werden als Teil der Anwendung ausgeführt. Sie können die URL wahrscheinlich öffnen, aber Sie können nicht zur Anwendung zurückkehren und eine Bestätigung ausführen.

Beachten Sie auch, dass XCUnit ein Unit Testframework ist. Sie können keinen erweiterten Integrationstest darin schreiben. Sie könnten mit der UI-Automatisierung erfolgreicher sein, aber dieser spezielle Testfall wird selbst für ihn sehr kompliziert sein. Um beispielsweise einen Link von Ihrer App im Simulator zu öffnen, können Sie eine HTML-Seite erstellen, die auf den Link umgeleitet wird, und dann die Shell zu exec open testLink.html -a "iOS Simulator" verwenden. Aber meiner bescheidenen Meinung nach ist diese Art von Tests unzuverlässig und wirklich schwer zu schreiben und zu debuggen.

Mein Rat wäre:

  1. Schreiben Sie einen Komponententest, der [UIApplication openURL:] verspottet, und vergewissern Sie sich, dass Sie eine korrekte URL an ihn übergeben. Oder wenn Sie die andere Richtung möchten, schreiben Sie einen Komponententest, der UIApplicationDelegate methods in der aufgerufenen Reihenfolge aufruft und das Öffnen eines Links durch Ihre App simuliert. So weit können Sie mit XCUnit gehen.
  2. Testen Sie den Rest manuell.
Sulthan 28.04.2015 14:34
quelle
-1

Ich bin unsicher, was genau Sie versuchen zu testen. Ich nehme an, dass es etwas mehr ist, als ob die URL geöffnet werden kann oder nicht. Der folgende Testfall prüft, ob FaceTime geöffnet wird und eine URL öffnen kann. Wenn die zu testende Anwendung ein benutzerdefiniertes Schema registriert, sollte einfach pathToTestApplication geändert werden.

%Vor%     
Price Ringo 23.04.2015 19:32
quelle