Bestelleinheitstest mit XCTest in Xcode 6
Ich würde gerne wissen, ob es irgendeinen Weg gibt, zu sagen, Xcode ausführen von unit-tests in einer festgelegten Reihenfolge. Ich meine nicht in einem gleichen XCTestCase class-Datei, aber zwischen all den Klasse-Datei.
Ich zum Beispiel laufen will, SitchozrSDKSessionTest vor der Ausführung SitchozrSDKMessageTest.
Ich sah einige threads auf stapeln oder auf der Apple-Dokumentation und ich habe nicht gefunden, etwas hilfreich.
Vielen Dank für Ihre Hilfe.
InformationsquelleAutor der Frage BoilingLime | 2014-10-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist alles alphabetisch (Klassen und Methoden). Also, wenn Sie müssen einige tests laufen, letzten, ändern Sie einfach den Namen der Klasse oder Methode (für (böse) Beispiel durch das voranstellen 'z_').
So...Sie haben Klasse Namen:
und Sie laufen in dieser Reihenfolge. Wenn Sie ausführen müssen, um MyAppTest1 als zweite, nur umbenennen, so dass es die Namen alphabetisch nach MyAppTest2 (z_MyAppTest1), und es wird laufen (gleiche Methode):
Nehmen Sie bitte auch die Benennung als Beispiel 🙂
InformationsquelleAutor der Antwort JakubKnejzlik
Es ist wahr, dass derzeit (wie Xcode-7), XCTestCase Methoden werden in alphabetischer Reihenfolge ausgeführt, so können Sie Kraft ein, um für Sie, indem Sie geschickt. Doch dies ist ein Implementierungsdetail und scheint, wie es könnte sich ändern.
Einen (hoffentlich) weniger zerbrechlich Weg, dies zu tun ist, überschreiben
+[XCTestCase testInvocations]
und wieder Ihre eigenenNSInvocation
Objekte in der gewünschten Reihenfolge die tests ausgeführt werden.Etwas wie:
Natürlich, der Nachteil hier ist, dass Sie müssen manuell hinzufügen jede test-Methode, um diese, anstatt dass diese automatisch aufgenommen. Es gibt ein paar Möglichkeiten, um diese situation zu verbessern. Wenn Sie nur brauchen, um einige der test-Methoden, nicht alle von Ihnen, in der überschreibung der
+testInvocations
zu nennen, könnten Sie durch, super, filter, diejenigen Methoden, die du hast manuell bestellt, dann Heften Sie den rest auf das Ende des array zurück. Wenn Sie brauchen, um alle test-Methoden, könnte man noch das Ergebnis des Aufrufs durch super und überprüfen Sie, dass alle automatisch abgeholt Methoden abgedeckt werden, die durch Ihre manuell erstellten, bestellten Ergebnis. Wenn nicht, könnten Sie geltend machen, verursacht einen Fehler, wenn Sie vergessen haben, fügen Sie alle Methoden.Ich bin abgesehen von der Diskussion, ob es "richtig" zu schreiben tests, die ausgeführt werden müssen in einer bestimmten Reihenfolge. Ich denke, es gibt seltene Szenarien, in denen das Sinn macht, aber andere können nicht übereinstimmen.
InformationsquelleAutor der Antwort Andrew Madsen
seiner bestellten Funktion, Namen, Brief-Aufträge, egal, wie Sie, um es in Ihrem code.
z.B.:
dem eigentlichen ausführen Reihenfolge :
InformationsquelleAutor der Antwort Jixian Wang
Neben andrew-madsen's Antwort:
Ich erstellte eine 'intelligente'
testInvocations
Klasse Methode, die sucht-Selektoren beginnen mit "test" und Sie alphabetisch sortiert.So dass Sie nicht haben, um weiterhin eine
NSArray
des Selektor-Namen getrennt.Fußnote: Es gilt als schlechte Praxis machen Sie Ihre unit-tests hängen von einander
InformationsquelleAutor der Antwort basvk
Für Sie Beispiel, können Sie einfach benennen Sie die tests, die Dateien auf Ihr Projekt wie folgt :
Xcode behandeln Sie die Dateien mit der alphabetischen Ordnung.
InformationsquelleAutor der Antwort ant_one
Der OP hat nicht erwähnt, ob CI verfügbar ist oder ob eine Kommandozeile Antwort ausreichen würde. In diesen Fällen habe ich genossen mit xctool [1]. Es hat syntax zum ausführen von tests auf nur einen einzigen test-Methode:
Ich werde dies tun, um sicherzustellen, testen wir die Gegenstände, die wir denken, sind einfachste zuerst.
1.[] facebook/xctool: Ersatz für Apple xcodebuild, dass macht es einfacher zu erstellen und testen von iOS-oder OSX-apps. ; ; https://github.com/facebook/xctool
InformationsquelleAutor der Antwort AnneTheAgile
Seit Xcode 7, XCTestCase Unterklassen sind alphabetisch geordnet. Wenn Sie sicherstellen möchten, dass die test-Methoden selbst sind auch in alphabetischer Reihenfolge ausgeführt, müssen Sie überschreiben die
testInvocations
Klasse Methode und die Rückgabe der Aufrufe sortiert nach Tags.InformationsquelleAutor der Antwort 0xced