Frage

Für die Zwecke der Unit-Tests Ich möchte ein iPhone Projektziel in Xcode erstellen, die alle den Release-Anwendungsdateien enthält darüber hinaus noch zusätzliche Dateien Code nützlich für die UI-Unit-Tests enthalten.

Ich kann dies tun, indem Sie die ursprüngliche Anwendung Ziel dupliziert; jedoch ist das Problem dabei, dass jedes Mal, wenn ich eine neue Quelldatei in das App Ziel hinzuzufügen, muß ich auch in das Ziel UnitTestUI hinzuzufügen. Es ist keine große Sache, nur unbequem, immer daran denken Dateien auf beiden Ziele hinzuzufügen.

Gibt es eine Möglichkeit, eine Abhängigkeit einzurichten, so dass jede Datei in das ursprünglichen App Ziel hinzugefügt wird auch das Gerät Testziel Auto hinzugefügt?

War es hilfreich?

Lösung

In Xcode können Sie Ziele erstellen, die aufeinander direkte Abhängigkeiten haben. Es gibt eine Reihe von Nicht-Produkt Gebäuden Zielen, das mit diesem in der Andere Kategorie helfen kann, wenn ein neues Ziel hinzufügen, je nachdem, wie einfach oder kompliziert Ihr Set-up ist. Erstellen spezifische Ziele für die Ausführung von Unit-Tests mit einer direkten Abhängigkeit von dem Hauptprojektziel ist sehr verbreitet und wird dokumentiert von Apple und auf einer Reihe von Blogs.

In Ihrer Situation, jedoch können Sie eine Menge Tweaking auf dem neuen, UI Prüfziel zu tun haben, aber sobald es eingerichtet ist, wird es sehr leicht zu pflegen. Nicht Ihre genaue Situation zu wissen, es ist unmöglich, Ihnen einen Schritt-für-Schritt-Antwort zu geben, aber hier sind die allgemeinen Richtlinien (optimieren Sie Ihre Situation anpassen):

  1. Erstellen Sie die Kopie Ihrer ursprünglichen Ziel, da die meisten Einstellungen werden die gleichen sein.
  2. Wählen Sie ein neues Ziel und öffnen Sie den Inspektor (⌘I)
  3. Sie unter Direkte Abhängigkeiten , klicken Sie auf die Schaltfläche + und wählen Sie Ihr Hauptziel.
  4. das neue Ziel, wie gewünscht, mit zusätzlichen Dokumentation / Quelle / Regeln oder was auch immer ein.

Wenn Sie es vorziehen, ziehen und Dinge fallen um, können Sie auch Ihr ursprüngliches Ziel ziehen (unter den Ziele Aufklappdreieck) in das neue Ziel und es wird automatisch die Abhängigkeit einrichten.

Nun

Wählen Sie Ihr Prüfziel als aktives Ziel und es wird immer mit diesen Regeln bauen. Auch, wenn Sie hinzufügen / Änderungsquelle in dem Hauptziel, es wird richtig neu erstellt werden, wenn das Testziel Bau ... keine Notwendigkeit zu erinnern, als auch eine Quelldatei zum Testziel hinzuzufügen. Ich schlage vor, etwas Zeit nehmen und die verschiedenen Xcode-Dokumentation zu lesen und mit viel der Zielvorlagen zur Verfügung ... auf lange Sicht zu spielen, es hilft wirklich viel effizienter Herstellung des Produkts verwendet wird. Es gibt viele nette Dinge, die ziemlich leicht in Xcode getan werden kann, wenn man weiß wie, auch bei sehr großen oder komplexen Projekten.

Andere Tipps

Nein, es ist nicht. Gibt es einen bestimmten Grund, warum Sie jede einzelne Datei in Ihrem Unit Test Ziel wollen? Dazu gehören main.m und alle Klassen, die Sie nicht (wie vielleicht Ihre Ansicht Klassen) zu testen. In der Tat, wenn main.m in Ihrem Unit Test enthalten ist, dann, wie laufen würde Ihre Einheit Test sogar richtig?

Ich löste das Problem, indem sie die meisten meiner Anwendung als statische Bibliothek erstellen, die für beide App und Unit-Test Ziele verknüpft ist.

Ziele in meinem Projekt wie folgt aussehen:

  • libMyApp
    • kompilieren .m-Dateien
  • MyApp.app
    • libMyApp (Abhängigkeit)
    • Link mit Bibliothek: libMyApp.a
  • UITest.app
    • libMyApp (Abhängigkeit)
    • Link mit Bibliothek: libMyApp.a

So kann ich .m Dateien nur auf „libMyApp“ Ziel hinzufügen und haben sie sowohl in der App und Tests zur Verfügung, und sie haben nicht einmal neu kompiliert werden müssen.

Der einzige gotcha ist, dass statische Bibliothek nicht Objective-C Kategorien zu unterstützen scheint, so habe ich immer noch, sie getrennt zu jedem Ziel hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top