2015-08-05 16 views
6

Wie die Ausführung des Komponententests beendet wird, wenn eine Logik fehlgeschlagen ist. Unten ist das Beispiel. Wie kann die Ausführung angehalten werden, wenn die Bedingung XCTAssertEqual ("Hello", "Hi", "Passed") fehlgeschlagen ist.XCTAssert-Unterbrechungsfunktion

func test_one() 
{  
XCTAssertEqual("Hello", "Hi", "Passed")  
let b = "Good Morning!" 
// code continues... 

} 
+0

Sie sollen, und es sollte die letzte Zeile in Ihrem Test sein, so ist dies wirklich ein Problem mit dem Code-Struktur, was wiederum bedeutet, dass eine gute Antwort nicht wirklich für Ihr Problem bereitgestellt werden kann. –

+1

Ich werde schwierig sein, wenn wir eine Parsing-Logik testen. Was ich meine ist, habe ich eine Service-Antwort, ich muss die Daten analysieren und in der Datenbank speichern. Ich muss testen, ob das Parsen der Antwort korrekt ist. Offensichtlich werde ich eine ganze Parsing-Logik in einer einzigen Funktion haben, und so wird es mehrere Assert-Bedingungen geben. Bitte korrigiere mich, wenn ich falsch liege – Coder

+0

Nein, du kannst einfach ein gemeinsames Setup machen und individuelle Behauptungen in jedem Test haben. Mehrere Behauptungen bedeuten, dass Sie nicht wissen, warum der Test fehlschlug, ohne die Log-In-Details zu lesen, was die Idee der schnellen Rückmeldung unterbricht –

Antwort

21

XCTestCase hat eine variable var continueAfterFailure: Bool der standardmäßig auf wahr. Dies bedeutet, dass der Test auch nach einem Test eine Assertion haben versagt

pro Test nur läuft weiter
override func setUp() { 
    super.setUp() 
    // Put setup code here. This method is called before the invocation of each test method in the class. 
    continueAfterFailure = false 
} 
+0

Danke Kevin. Kann ich continueAfterFailure zwischen zwei Assert-Bedingungen verwenden? Wie in meiner Frage erwähnt, wenn die Bedingung XCTAssert 1 fehlgeschlagen ist, sollte XCTAssert 2 Bedingung nicht ausgeführt werden. – Coder

+0

Das passiert, wenn Sie continuedAfterFailure auf false setzen – Kevin

+0

Super! Ich wusste nichts davon! – Sajjon