J'ai un problème avec le Xcode IDE 6 qui ne détecte pas correctement les scénarios de test de mon unité Swift. Lorsque je lance les tests unitaires, tous les tests ont été exécutés.
Mais dans IDE lors de l'édition, les tests unitaires ne sont pas reconnus. Je dois exécuter toute la suite de tests unitaires pour pouvoir exécuter un seul test.
Je n'arrivais pas à comprendre comment éviter ce problème.
Problème résolu. Tout ce que j'ai à faire est 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 peu à peu les bogues de l'éditeur Xcode 6.3.
Pour moi, le correctif consistait à préfixer toute méthode avec "test"
c'est à dire.
func arrayResponseCall()
devrait être:
func testArrayResponseCall()
La "solution" pour moi était d'ajouter un nouveau test. J'ai inventé des bêtises:
func testThatNothing() {
XCTAssertTrue(true, "True should be true")
}
Lorsque j'ai relancé les tests, tous les tests de ce fichier ont été reconnus par l'éditeur. J'ai supprimé le test bidon et tout va bien. Malheureusement, je devais le faire dans chaque fichier, mais au moins cela fonctionne. J'espère que ça aide quelqu'un.
Voici quelques solutions à ce problème:
Attendez quelque temps. Il faut parfois du temps pour charger le diamant. Naviguez entre différents fichiers, puis passez au même cas de test, il devrait apparaître.
Nettoyer le projet, Nettoyer le dossier de construction et même Supprimer le contenu des données dérivées. Cochez comment supprimer les données dérivées en toute sécurité.
Quittez Xcode et ouvrez-le à nouveau.
Assurez-vous que votre nom de test test commence partestFunc_Name
Parfois, votre fichier test-case peut contenir une fonction autre que test-case. Dans un tel scénario, le symbole en losange n'apparaît pas. Remove such function.
Dans mon cas, les solutions 1, 3 et 5 ont souvent fonctionné pour moi.
J'ai eu le même problème aussi. Assurez-vous simplement que chacun de vos cas de test contient une sorte d’instruction XCTAssert ().
func testSomething(){
XCTAssert(true, "Pass")
}
(Comme votre commentaire indique que vous rencontrez toujours ce problème après une semaine, cela ne vous aidera peut-être pas, mais…)
J'ai rencontré ce problème où l'ajout d'un nouveau test (Swift) dans la version 6.1 ne le ferait pas apparaître dans "Test Navigator" ou dans l'éditeur de schémas. Le redémarrage de Xcode a résolu le problème et je peux maintenant exécuter les tests individuellement.
Assurez-vous que le nom du scénario de test commence par "test" suivi du nom de votre choix et construisez (cmd + B) le projet. Le losange apparaîtra !!.
Ma réponse complète est ici .
Dans Xcode 7, la configuration des 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 de spécial à faire.
class MyClass {
func addTwoNumbers(a: Int, b: Int) -> Int {
return a + b
}
}
Il est possible que vous deviez également définir "Module de définition" sous Emballage sur OUI pour les paramètres de construction de votre application.
Voir aussi ces réponses:
J'ai eu une erreur similaire (bien qu'en Objective C, pas Swift). Si j'ajoutais une nouvelle méthode de test à la classe, celle-ci n'apparaîtrait pas dans le navigateur de test et ne serait pas exécutée lorsque j'exécuterais l'ensemble du bundle. Je n’obtiendrais pas non plus ces points dans la barre latérale à côté de chaque méthode qui, si on cliquait dessus, n’exécuterait qu’une seule méthode de test.
La seule chose qui résolve mon problème est 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 redéfinir les paramètres de construction.
Pour moi, il suffisait de sélectionner Product->Test
et d'attendre un peu. Quand les tests commencent à courir, tous les diamants deviennent disponibles
Lorsque vous ajoutez un nouveau test, enregistrez le fichier (Cmd + S) et le losange apparaîtra (vérifié sur Xcode 7.3)
Parfois, il vous suffit d'attendre que Xcode ait fini d'indexer tous vos fichiers. Pour les grands projets, la vue du navigateur de test unitaire est souvent vide jusqu'à la fin.
J'ai résolu mon problème en changeant simplement les méthodes private
en public
.
Donc, si vous rencontrez le même problème, changez:
private func testString()
à:
public func testString()