Xcode 6 Editor ne reconnaît pas les tests unitaires

J’ai un problème que l’IDE Xcode 6 ne détecte pas correctement mes cas de test d’unité rapide. Lorsque je lance les tests unitaires, tous les tests ont été exécutés.

Mais dans l’EDI lors de l’édition des tests unitaires ne sont pas reconnus. Je dois exécuter toute la suite de tests de l’unité pour exécuter un seul test.

Je n’arrivais pas à comprendre comment j’évitais ce problème.

entrer la description de l'image ici

    Problème résolu. Il me suffit de lancer la fenêtre “Fenêtre -> Projets” et de supprimer les “Données dérivées”. Après l’indexation, tous les tests fonctionnent.

    En attendant, Apple corrige petit à petit les bogues de l’éditeur Xcode 6.3.

    Pour moi, la solution consistait à préfixer toutes les méthodes avec “test”

    c’est à dire

    func arrayResponseCall() 

    devrait être:

     func testArrayResponseCall() 

    Le “correctif” pour moi était d’append un nouveau test. J’ai inventé des bêtises:

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

    Lorsque j’ai à nouveau effectué les tests, tous les tests de ce fichier ont été reconnus par l’éditeur. J’ai supprimé le faux test et tout va bien. Malheureusement, je devais le faire dans chaque fichier, mais au moins cela fonctionne. J’espère que cela aide quelqu’un.

    Voici quelques solutions à ce problème:

    1. Attendez quelque temps . Il faut du temps pour charger du diamant parfois. Naviguez entre différents fichiers, puis déplacez-vous vers le même cas de test .

    2. Nettoyer le projet, nettoyer le dossier de construction et même supprimer le contenu des données dérivées. Cochez cette case pour supprimer les données dérivées en toute sécurité.

    3. Quittez Xcode et ouvrez-le à nouveau.

    4. Assurez-vous que votre nom de test commence par testFunc_Name

    5. Parfois, votre fichier de test peut contenir une fonction autre que le test-case. Dans un tel scénario, le symbole de diamant n’apparaît pas. Remove such function.

    Dans mon cas, une solution 1, 3 et 5 fonctionnait souvent pour moi.

    J’ai eu le même problème aussi. Assurez-vous que chacun de vos scénarios de test contient des instructions XCTAssert ().

     func testSomething(){ XCTAssert(true, "Pass") } 

    (Puisque votre commentaire indique que vous avez toujours ce problème après une semaine, cela pourrait ne pas vous aider, mais…)

    J’ai rencontré ce problème lorsque l’ajout d’un nouveau test (Swift) en 6.1 ne le ferait pas apparaître dans “Test Navigator” ou l’éditeur de schéma – le redémarrage de Xcode a résolu le problème et maintenant je peux exécuter les tests individuellement.

    Xcode 7

    Ma réponse complète est ici .

    Dans Xcode 7, configurer les tests unitaires est un peu plus facile que dans Xcode 6 (inutile d’annoter la classe et les méthodes en tant que public ). Utilisez @testable avant l’importation du nom de la classe.

     import XCTest @testable import MyProject class MyClassTests: XCTestCase { func testMyMethod() { let myClass = MyClass() let sum = myClass.addTwoNumbers(1, 2) XCTAssertEqual(sum, 3) } } 

    Dans votre classe, vous n’avez rien à faire de spécial.

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

    Il est possible que vous deviez également définir “Définir le module” sous Emballage sur OUI pour les parameters de création de votre application.

    Voir aussi ces réponses:

    Assurez-vous que le nom du test commence par “test” suivi du nom de votre choix et comstackz (cmd + B) le projet. Le diamant apparaîtra !!.

    J’ai eu une erreur similaire (bien que dans l’objective C, pas rapide). Si j’ajoutais une nouvelle méthode de test à la classe, la nouvelle méthode ne serait pas affichée dans le navigateur de test et ne serait pas exécutée lorsque j’exécuterais l’ensemble du paquet. Je ne voudrais pas non plus obtenir ces points dans la barre latérale à côté de chaque méthode qui, si elle était cliquée, exécuterait une seule méthode de test.

    La seule chose qui a résolu mon problème a été de supprimer toute ma classe de test (enregistrer son contenu ailleurs temporairement) puis de recréer la classe de test et (peut-être plus soigneusement?) De définir à nouveau les parameters de construction.

    Il suffit parfois d’attendre que Xcode ait fini d’indexer tous vos fichiers. Pour les grands projets, la vue de mon navigateur de test d’unité est souvent vide jusqu’à la fin.

    Pour moi, il suffisait de sélectionner Product->Test et d’attendre un peu. Lorsque les tests commencent à courir, tous les diamants sont disponibles

    Lorsque vous ajoutez un nouveau test, sauvegardez le fichier (Cmd + S) et le diamant apparaîtra (vérifié sur Xcode 7.3)

    Pour moi, je dois append des tests ci-dessous ici entrer la description de l'image ici

    J’ai résolu mon problème en transformant simplement les méthodes private en public .

    Donc, si c’est le même problème que vous rencontrez, basculez:

     private func testSsortingng() 

    à:

     public func testSsortingng()