0
votes

Pourquoi? Classe montrant une couverture de test unitaire même si elle n'est pas ajoutée dans les objectifs de test

J'ai quelques cours d'UIView qui arrivent à la couverture même si. Je ne les ai pas ajoutés sous la cible de test de l'unité. Ni un test d'unité ni un test d'unité UI. Mais toujours ces fichiers montrant.

Je ne sais pas si ils sont inclus dans la couverture de test.

Q: Comment nous pouvons les supprimer d'une couverture de test unitaire? Q: Sont-ils impliqués dans le score de couverture de test unitaire?

Classe incluse dans la couverture des tests d'unité:

 Entrez la description de l'image ici

classes non ajoutées dans les objectifs de test:

 Entrez la description de l'image ici


0 commentaires

5 Réponses :


3
votes

Je pense que votre problème est lié à la couverture de code de collecte de code pour toutes cibles.

  1. Créer une nouvelle cible - vous pouvez dupliquer l'existant.

     Entrez la description de l'image ici

    1. Changer Application hôte à toute nouvelle cible.

       Entrez la description de l'image ici

      1. Modifiez vos paramètres de schéma de test sur une nouvelle cible en tant que source de couverture de code. Veuillez consulter les captures d'écran:

         gérer les schémas

         Modifier

         Choisissez une couverture de collecte pour ...

         Entrez la description de l'image ici

         Entrez la description de l'image ici

        1. N'oubliez pas que Ajouter à votre fichier de test @testable Importation UnitestExamPlecodecoverage
        2. Ajouter aux nouveaux fichiers cibles que vous souhaitez. Dans mon exemple, proj j'ai: Appdelerate , ViewController , ViewController2 , ViewController3 , ViewController4 , Voir , View2 , View3 , View4 . J'ai ajouté à la nouvelle cible: Appdelegate , ViewController3 , ViewController4 , View3 , View4 Donc, seules ces cinq classes devraient être une base pour calculer la couverture du code.

        3. Ajoutez des tests à vos cours.

        4. Le rapport de couverture de code ne contient que des classes ajoutées à une nouvelle cible . S'il vous plaît rappelez-vous que votre objectif principal peut être votre objectif principal - le nouveau n'est que la sorte de couche abstraite pour atteindre votre objectif: «Supprimer certaines classes du rapport de couverture de code».

           Entrez la description de l'image ici

          Voici tout le projet: https://github.com/mstaruchowicz/so55723759

          Tests heureux;)


7 commentaires

Ouais encore si je sélectionne uniquement la cible de projet, ces fichiers UIView encore sont ajoutés dans le test.


C'est vrai, mais vous pouvez gérer vos objectifs par exemple. Ajoutez-en un de plus pour ne conserver que les classes aux tests et sur la base de la couverture du code calculer.


Mais cela ne donnera pas un rapport clair, ce qui ne sera pas spécifique aux fichiers de ne pas être cible de projet. n'est-ce pas?


Pourquoi pas clair? Votre objectif est d'avoir une couverture de code pour votre projet exclu certains uiview en fonction de cours, non? Donc, vous pouvez créer une nouvelle cible qui ne contient que des classes pour calculer la couverture du code. Ensuite, vous venez de définir une cible appropriée pour la couverture de code comme émission de tir à l'écran.


@Sandy j'ai ajouté plus d'informations comment atteindre votre objectif. J'espère que pour le moment est tout clair :)


Les captures d'écran contiennent mal orthographiés. Devrait être (...) Couverture au lieu de (...) Cachedge . Désolé.


Nice One, @mateusz! très détaillé :)



1
votes

Lorsque vous êtes une couverture active dans votre projet, tous les fichiers de la cible calculeront la couverture.

Je vous recommande d'utiliser XCOV: https://github.com/nakiostudio/xcov

Vous pouvez exécuter la couverture et mettre vos fichiers ignorés pour améliorer une couverture correcte.


0 commentaires

1
votes

hi @sandy , pour répondre à vos questions:

Comment nous pouvons les supprimer d'une couverture de test unitaire?

AS de Xcode 10.2 Il n'ya aucun moyen d'exclure les fichiers du rapport de couverture de test.

sont-ils impliqués dans un score de couverture de test unitaire?

Oui, ils sont. Tous les fichiers contribuent à la couverture totale%.

Si vous souhaitez calculer un score de couverture de test qui ne prend pas en compte certains fichiers, votre meilleure chance est d'écrire un script pour analyser le XCCOV sortie.

Je ne trouve aucune documentation officielle de la manière d'interagir, mais Ce message est un bon endroit pour commencer.


1 commentaires

XCOV utilisait pour exclure la couverture pour ignorer les fichiers. Ce problème est-il avec le dernier XCOV?



0
votes

Si vous souhaitez ignorer les fichiers que vous pouvez ignorer les fichiers que vous souhaitez, Slather peut être un meilleur outil.

Vous pouvez ignorer les fichiers du calcul de la couverture en configurant les fichiers dans .slather.yml fichier sous Ignorer option.

Veuillez trouver les détails ici Comment ignorer.


0 commentaires

0
votes

Lorsque des tests d'unité sont exécutés,

  • Votre application est lancée Les tests
  • sont injectés et fonctionnent

    Le problème est que l'application lancement incendie votre séquence normale, créant des vues et peut-être lancer des appels réseau. Cela interfère non seulement avec les rapports de couverture de code - cela poisons potentiellement vos tests de l'unité. Par exemple, si vous testez des notifications en passant par une unité de réception d'une notification, vous devez savoir que les seuls objets à l'écoute de cette notification ont été créés par le test, et non sur le lancement de l'application.

    Un autre problème avec l'ignorance de la couverture de certains fichiers est la suivante: comment allez-vous voir quelle est la couverture de votre appareil de test de ces fichiers?

    La solution consiste à utiliser un délégué d'applications différent pour des tests qui ne font presque rien.


0 commentaires