webentwicklung-frage-antwort-db.com.de

Der Xcode 6 Editor erkennt keine Komponententests

Ich habe ein Problem, dass der Xcode IDE 6 meine Swift-Gerätetestfälle nicht richtig erkennt. Wenn ich die Komponententests durchführe, wurden alle Tests ausgeführt.

In der IDE werden die Komponententests jedoch während der Bearbeitung nicht erkannt. Ich muss die gesamte Einheitstestsuite ausführen, um einen einzelnen Test auszuführen.

Ich konnte nicht herausfinden, wie ich diesen Fehler vermeide.

enter image description here

51
ChaosSpeeder

Das Problem ist gelöst. Alles was ich tun muss ist, das Fenster "Fenster -> Projekte" zu starten und die "abgeleiteten Daten" zu löschen. Nach der Indizierung funktionieren alle Tests. 

Mittlerweile behebt Apple die Fehler im Xcode 6.3-Editor Stück für Stück. 

56
ChaosSpeeder

Für mich bestand das Update darin, alle Methoden mit 'test' vorzustellen.

d.h. 

func arrayResponseCall() 

sollte sein: 

func testArrayResponseCall()
20
Antoine

Der "Fix" für mich bestand darin, einen neuen Test hinzuzufügen. Ich habe etwas Unsinn gemacht:

func testThatNothing() {
    XCTAssertTrue(true, "True should be true")
}

Als ich die Tests erneut ausführte, wurden alle Tests in dieser Datei vom Editor erkannt. Ich habe den gefälschten Test gelöscht und es ist alles noch in Ordnung. Leider musste ich dies in jeder Datei tun, aber zumindest funktioniert es. Hoffe das hilft jemandem.

13
Reid

Hier sind einige Lösungen für dieses Problem:

  1. Warte eine Zeit lang. Es dauert manchmal Zeit, Diamanten zu laden. Navigieren Sie zwischen verschiedenen Dateien und wechseln Sie zum gleichen Testfall, in dem sie erscheinen soll.

  2. Projekt reinigen, Build-Ordner bereinigen und sogar abgeleiteten Dateninhalt löschen. Markieren Sie dieses wie Sie abgeleitete Daten sicher löschen können.

  3. Xcode beenden und erneut öffnen.

  4. Stellen Sie sicher, dass Ihr Testfallname mittestFunc_Name beginnt.

  5. Manchmal enthält Ihre test-case-Datei andere Funktionen als test-case. In einem solchen Szenario erscheint das Diamantsymbol nicht. Remove such function.

In meinem Fall 1, 3 und 5 funktionierte die Lösung oft für mich.

8

Ich hatte auch das gleiche Problem. Stellen Sie einfach sicher, dass jeder Ihrer Testfälle eine Art XCTAssert () - Anweisung hat.

func testSomething(){
     XCTAssert(true, "Pass")
}
6
Ernest Han

(Da Ihr Kommentar darauf hinweist, dass Sie dieses Problem nach einer Woche immer noch haben, kann dies Ihnen möglicherweise nicht helfen, aber…)

Ich bin auf dieses Problem gestoßen, bei dem das Hinzufügen eines neuen (Swift) Tests in 6.1 nicht dazu führte, dass es im "Test Navigator" oder im Schema-Editor angezeigt wird. Durch das Neustarten von Xcode wurde das Problem behoben. Jetzt kann ich die Tests einzeln ausführen.

3
Sophie Alpert

Vergewissern Sie sich, dass der Name des Testfalls mit "test" beginnt, gefolgt von einem beliebigen Namen, und erstellen Sie (cmd + B) das Projekt. Der Diamant wird angezeigt !!.

3
Akila Wasala

Xcode 7

Meine vollständige Antwort ist hier .

In Xcode 7 ist das Einrichten von Unit Testing etwas einfacher als in Xcode 6 (Klassen und Methoden müssen nicht als public kommentiert werden). Verwenden Sie @testable vor dem Import des Klassennamens.

import XCTest
@testable import MyProject

class MyClassTests: XCTestCase {

    func testMyMethod() {

        let myClass = MyClass()
        let sum = myClass.addTwoNumbers(1, 2)

        XCTAssertEqual(sum, 3)
    }
}

In Ihrer Klasse müssen Sie nichts Besonderes tun.

class MyClass {

    func addTwoNumbers(a: Int, b: Int) -> Int {
        return a + b
    }
}

Möglicherweise müssen Sie auch "Defines Module" unter "YES" für die Build-Einstellungen Ihrer App festlegen.

Siehe auch diese Antworten:

3
Suragch

Ich hatte einen ähnlichen Fehler (obwohl in Objective C nicht Swift). Wenn ich der Klasse eine neue Testmethode hinzufügte, wurde die neue Methode weder im Testnavigator angezeigt noch ausgeführt, wenn das gesamte Bundle ausgeführt wurde. Ich würde auch nicht diese Punkte in der Seitenleiste neben jeder Methode erhalten, die bei einem Klick nur eine Testmethode ausführen würde. 

Das einzige Problem, das mein Problem behebte, bestand darin, meine gesamte Testklasse zu löschen (den Inhalt vorübergehend an anderer Stelle zu speichern), die Testklasse neu zu erstellen und (vielleicht sorgfältiger?) Die Build-Einstellungen erneut festzulegen. 

2
Olivia Stork

Für mich war es genug, Product->Test auszuwählen und etwas zu warten. Wenn die Tests gerade beginnen, sind alle Diamanten verfügbar

1

Wenn Sie einen neuen Test hinzufügen, speichern Sie die Datei (Cmd + S) und der Raute wird angezeigt (unter Xcode 7.3 geprüft).

1
Mike Taverne

Manchmal müssen Sie nur warten, bis Xcode alle Ihre Dateien indiziert. Bei großen Projekten ist die Ansicht des Gerätetestnavigators häufig leer, bis sie abgeschlossen ist.

1
Ari Braginsky

Für mich muss ich Tests hier unten hinzufügen  enter image description here

1
Stephen Chen

Ich habe mein Problem gelöst, indem ich die private-Methoden in public umwandelte. 

Wenn dies das gleiche Problem ist, mit dem Sie konfrontiert sind, wechseln Sie:

private func testString()

zu:

public func testString()
0
Alcivanio

Hier ist, was für mich gearbeitet hat. Obwohl der Komponententest angibt, dass 0 Tests verfügbar sind, habe ich auf Wiedergabe geklickt und dann alle 4 Tests durchlaufen und dann angezeigt.

enter image description here

0
ScottyBlades