Verschiedene Build-Konfigurationen für Testschemata

8

Gibt es eine Möglichkeit, die Komponententests in einem Debug-Build und Leistungstests in einem Release-Build auszuführen, ohne einzelne Schemata manuell auszuwählen und auszuführen?

Ich habe einen Komponententest und ein Leistungstestschema. In der Testkonfiguration für das Komponententestschema habe ich Debug-Build ausgewählt, und für das Leistungstestschema habe ich Release-Build ausgewählt. Wenn ich jedes Schema einzeln ausführe, bekomme ich einen Debug-Build bzw. einen Release-Build.

Wenn ich ein anderes Schema erstelle, das beide Schemata ausführt, dann hat das neue Schema seine eigene Build-Konfiguration. Wenn ich eine Build-Konfiguration für das Debugging für dieses neue Schema einstelle, dann bekomme ich auch einen Debug-Build für meine Leistungstests.

    
rid 30.06.2016, 07:20
quelle

2 Antworten

1

Sie könnten verschiedene Test-Bundles verwenden und das, was Sie wollen, einschließen / ausschließen.

Was ich meine, ist die Erstellung eigener Testziele (Bundles) und die Verwendung des Xcode Test Navigators.

Also zum Beispiel ein MyUnitBundleTests Ziel und ein MyPerformanceBundleTests Ziel erstellen. Sie wären zwei separate Test- "Bündel", in denen Sie Klassen, Methoden usw. einschließen / ausschließen möchten.

Der Testnavigator zeigt eine hierarchische Liste der Testpakete und zugehörigen Klassen, Methoden usw. in einem Projekt an.

Sie können Testpakete, -klassen und -methoden selektiv aktivieren und deaktivieren, indem Sie bei gedrückter Strg-Taste auf die Elemente in der Testnavigatorliste klicken und im Kontextmenü Aktivieren oder Deaktivieren aktivieren bzw. deaktivieren in dem Schema.

Testen mit Xcode - Schnellstart

Mit Xcode testen - Tests ausführen und Ergebnisse anzeigen

Es gibt mehrere zusätzliche interaktive Möglichkeiten zum Ausführen von Tests. Xcode führt Tests basierend darauf durch, welche Testziele in einem Schema enthalten und aktiviert sind. Mit dem Testnavigator können Sie direkt steuern, welche Testziele, Klassen und Methoden in einem Schema enthalten, aktiviert oder deaktiviert sind, ohne den Schemaeditor verwenden zu müssen.

Ich bin mir nicht sicher, ob dies das ist, was Sie wollen, aber dies ist die einzige Option, die ich mir zum Testen vorstellen kann, ohne zum Schema-Editor zu wechseln.

    
tymac 09.07.2016 04:44
quelle
0

Es könnte einen Weg geben, das gewünschte Verhalten zu erreichen, aber es ist eher ein Hack.

Das Hauptproblem, das ich sehe, ist die gewünschte Build-Konfiguration für die Testaktion des Schemas. Da die Erstellungskonfiguration für alle Ziele im Schema gilt, müssen Sie eine Möglichkeit finden, Xcode dazu zu bringen, Ihr Ziel sowohl mit Debug- als auch mit Release-Konfiguration zu erstellen. Davon abgesehen, hier ist die Idee:

  1. Exportieren Sie die Release-Konfiguration für Ihr Ziel in eine xcconfig-Datei ( xcodebuild -scheme "schemeName" -showBuildSettings >> release.xcconfig und stellen Sie sicher, dass sie nur die Release-Einstellungen enthält)
  2. Erstellen Sie ein anderes Ziel für Ihre Leistungstests, die dieselben Quelldateien erstellen
  3. Setzen Sie die Debug-Konfiguration dieses neuen Ziels auf die zuvor erwähnte xcconfig-Datei der Release-Konfiguration (das ist im Grunde der Teil, wo wir Xcode täuschen)
  4. Fügen Sie der Build-Aktion Ihres Schemas das Original und das neu erstellte Ziel hinzu und fügen Sie die Test-Bundles hinzu (vorausgesetzt, sie befinden sich in einem separaten Test-Bundle)
  5. Wählen Sie die Debug-Build-Konfiguration für die Testaktion aus.

Wenn Sie Ihr Schema testen, sollte es jetzt die Quellen sowohl im Debug- als auch im Release-Release erstellen und Ihre Komponententests für die Debug-Build-Konfiguration und die Leistungstests für die Release-Konfiguration ausführen.

Das Setup ist etwas fragil, da Sie beiden Zielen neue Quelldateien hinzufügen müssen. Sie sollten in der Lage sein, den Prozess mit einem Ruby-Skript und dem xcodeproj-Juwel zu automatisieren.

Ich hoffe, das hilft.

    
Jens Meder 10.07.2016 10:27
quelle