Fehler mit XCTestExpectation: API-Verletzung - mehrere Aufrufe -[XCTestExpectation erfüllen]

Ich bin mit XCTestExpectations in Xcode 6 (Beta 5) für asynchrone Tests. Alle meine asynchrone tests pass individuell jedes mal, wenn ich Sie laufen. Jedoch, wenn ich versuche zu laufen, meine gesamte suite, einige tests nicht bestehen, und die app stürzt ab.

Den Fehler den ich bekomme, ist, sagt API violation - multiple calls made to -[XCTestExpectation fulfill]. In der Tat, das ist nicht wahr innerhalb einer einzelnen Methode; meine Allgemeine format für meine tests ist nachfolgend dargestellt:

- (void) someTest {
    /* Declare Expectation */
    XCTestExpectation *expectation = [self expectationWithDescription:@"My Expectation"];
    [MyClass loginOnServerWithEmail:@"[email protected]" andPassword:@"asdfasdf" onSuccess:^void(User *user) {
        /* Make some assertions here about the object that was given. */

        /* Fulfill the expectation */
        [expectation fulfill];
    }];

    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError *error) {
        /* Error handling here */
    }];
}

Wieder, diese tests gehen, wenn Sie einzeln ausgeführt, und Sie sind tatsächlich die Netzwerk-Anforderungen (funktioniert genau wie beabsichtigt), aber zusammen, die Sammlung von tests, die nicht ausgeführt werden.

War ich in der Lage, einen Blick auf diese post hier, aber war nicht in der Lage, um die Lösung für mich zu arbeiten.

Zusätzlich, ich bin mit OSX Mavericks und mit Xcode 6 (Beta 5).

  • Ich habe suites of 100+ tests vor der Verwendung von im wesentlichen identischen format und habe nicht das Problem, bevor Sie... Sind Sie sicher, es gibt keinen einzelnen test, die Fälle, in denen zwei erfüllt Sie?
  • Absolut sicher.
  • Vielleicht ein upgrade auf beta 6 zu sehen, ob das problem weiterhin besteht?
  • Ich habe dieses Problem, als ich erfüllen innerhalb der expectationForNotification handler. Meine Vermutung ist, dass dein test ist Berufung erfüllen mehrere Male. wenn Sie fügen Sie eine log-Anweisung, wenn Sie anrufen, erfüllen Sie sehen werden 🙂
InformationsquelleAutor Mihir | 2014-08-06
Schreibe einen Kommentar