2016-05-17 10 views
2

das folgende Setup Gegeben:Wie kann ich eine dokumentenbasierte App mit XCTest testen?

  • Ein Dokument-basierten OS X app in Swift geschrieben
  • OS X El Capitan dev Maschine
  • Xcode 7.x
  • Der neue/umgebaute XCTest Rahmen

Wie können die dokumentenbasierten Teile der App mit dem XCTest-Framework UI-getestet werden?


reguläre Einheit oder UI-Tests nicht auf die dokumentenbasierte Funktionalität bezogen sind einfach, aber ich kann nicht sehen, wie UI-Tests auf der dokumentenbasierten Bit, da zu tun, dass in vom Erreichen in UI-Tests werden wir verboten die App und zum Beispiel die NSDocument-Klasse verspotten.

Ein Vorschlag, den ich gehört habe, ist das Erstellen von Fixture-Dateien/Ordnern (abhängig davon, was Ihre dokumentbasierte App benötigt) im Testresourcen-Ordner und irgendwie den Test, um das zu öffnen. Aber gibt es eine bessere Lösung?

Antwort

2

Die Person, die den Vorschlag gemacht hat, ist ziemlich genau. Da die UI-Tests genau die Funktionalität der App ausüben sollen, ohne in die Interna zu gelangen, müssen Sie die Dokumente extern laden.

XCTest ist nicht (wie von Xcode 7.x + El Capitan) in der Lage, die Datei zu fahren -> Öffnen ... -> Wählen Sie eine Datei -> Klicken Sie auf "Öffnen" Button Flow - es geht so weit wie die Open ... Dialog und dann stürzt der Test ab, weil es nicht weiter gehen kann. Dies bedeutet, dass Sie das Dokument nicht über die Benutzeroberfläche öffnen können.

Dies lässt nur eine andere Option - Sie sollten versuchen, die App durch eine Art übergebene Argument in init zu initialisieren in den notwendigen lokalen Zustand lob

+0

Das weiß, was gut ist, obwohl ich von Apple wünschen würde backen besser. Möglichkeit, dies in XCTest zu tun. Könntest du deine Antwort mit einer Möglichkeit aktualisieren, den Weg so zu öffnen, dass der Pfad relativ ist? Sonst könnten wir mit einem spröden absoluten Pfad enden, der nur auf dem Mac eines Entwicklers funktioniert, und niemandem sonst (noch der CI-Box) – user1475135

+0

Ich habe es tatsächlich nie so gemacht, aber aus der Spitze meines Kopfes, bist du dazu in der Lage Die Datei als Binärdatei in Ihr Projekt einbetten? Dann ist es nur ein Teil Ihres Arbeitsbereichs und Sie können auf verschiedene Arten darauf zugreifen, einschließlich des relativen Pfads. –