5 votes

Annulation prématurée des tests XCT

J'exécute quelques tests unitaires dans Xcode avec XCTests. Lorsque je les exécute, tous les tests réussissent ou échouent et affichent le petit crochet vert ou la croix rouge. Le principal problème semble être que mes tests sont annulés prématurément et qu'ils ne sont pas exécutés correctement.

Voici quelques informations supplémentaires :

  1. Lorsque les tests sont exécutés, il n'y a aucune sortie console, ce qui n'était pas le cas auparavant. Je veux dire par là que j'avais la sortie console attendue avant, maintenant je ne l'ai plus.

  2. Lorsque les tests sont exécutés, je n'ai pas besoin de déverrouiller mon iPhone pour que l'application puisse fonctionner. De plus, même si mon iPhone est déverrouillé, il ne lance pas l'application, ce qu'il faisait auparavant.

  3. Lors de l'exécution de mes tests, la compilation se termine et le message "Canceling..." apparaît très rapidement dans la barre d'information de Xcode (la barre supérieure et centrée qui affiche les avertissements et "Building" lorsque vous construisez votre projet).

  4. J'utilise le fichier .xcworkspace (parce que j'utilise Pods).

  5. J'ai un plan de construction qui est le projet.

  6. J'ai eu les mêmes problèmes, plus le fait que les coches vertes et les croix rouges n'apparaissent pas sur mes tests après qu'ils aient été exécutés et que parfois mes tests n'apparaissent pas du tout dans l'onglet des tests. J'ai résolu ces problèmes en supprimant le fichier Podfile.lock, le répertoire Pods et le répertoire .xcworkspace, puis en exécutant Pod install. Après avoir fait cela, j'ai eu les mêmes problèmes, à l'exception de ces deux problèmes.

  7. J'ai essayé d'exécuter de nouveaux tests sur une branche différente, mêmes problèmes.

  8. Avant de rencontrer l'un de ces problèmes, je me contentais d'écrire des tests et d'essayer différentes méthodes d'écriture de tests. J'ai annulé tous ces changements et j'obtiens toujours ces erreurs.

  9. J'ai également constaté les mêmes problèmes en exécutant les tests sans le simulateur.

  10. Lorsque je compile et exécute l'application depuis Xcode, elle fonctionne bien.

Tout conseil sur la manière de résoudre ce problème serait le bienvenu ! Veuillez demander plus de détails si nécessaire.

Voici une vidéo de moi en train de faire mes tests. J'ai mis en place un nouveau projet et une nouvelle cible de test unitaire pour montrer ce qui se passe. Nota: Il y a un test vide là-dedans et un test qui devrait toujours passer :

enter image description here

Comme vous pouvez le voir, le problème est que les tests ne se déroulent pas correctement. Les croix vertes et rouges ne s'affichent plus, le test qui est censé toujours réussir échoue, il n'y a pas de sortie console, et dans la barre d'information supérieure, il est dit "canceling..." presque immédiatement. Tout conseil sur la raison de cette annulation serait le bienvenu !

Voici quelques captures d'écran de la façon dont le code est configuré :

enter image description here enter image description here

Voici également le code (c'est juste le code de base après la création d'un nouveau test unitaire, sauf que j'ai ajouté une assert qui devrait toujours passer) :

import XCTest
@testable import example

class exampleTests: XCTestCase {

    override func setUp() {
        // Put setup code here. This method is called before the invocation of each test method in the class.
    }

    override func tearDown() {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
    }

    func testExample() {
        // This is an example of a functional test case.
        // Use XCTAssert and related functions to verify your tests produce the correct results.
        XCTAssertTrue(true)
    }

    func testPerformanceExample() {
        // This is an example of a performance test case.
        self.measure {
            // Put the code you want to measure the time of here.
        }
    }
}

Edita:

Donc, selon la suggestion de @CPR, j'ai essayé à nouveau sur le simulateur et les erreurs ont pratiquement toutes disparu . J'ai réessayé sur l'appareil physique, mais les erreurs ont persisté . Note : J'avais déjà essayé sur le simulateur et obtenu les mêmes erreurs. . Je n'ai rien changé depuis, donc je ne sais pas pourquoi cela fonctionne maintenant. Voici la sortie de la console lors de l'exécution des tests sur la simulation (je ne sais pas si cela peut aider, mais je l'ajoute quand même) :

Test Suite 'All tests' started at 2018-12-06 03:59:53.045
Test Suite 'exampleTests.xctest' started at 2018-12-06 03:59:53.046
Test Suite 'exampleTests' started at 2018-12-06 03:59:53.046
Test Case '-[exampleTests.exampleTests testExample]' started.
Test Case '-[exampleTests.exampleTests testExample]' passed (0.001 seconds).
Test Case '-[exampleTests.exampleTests testPerformanceExample]' started.
/Users/akashkundu/Documents/example/exampleTests/exampleTests.swift:30: Test Case '-[exampleTests.exampleTests testPerformanceExample]' measured [Time, seconds] average: 0.000, relative standard deviation: 115.251%, values: [0.000004, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001], performanceMetricID:com.apple.XCTPerformanceMetric_WallClockTime, baselineName: "", baselineAverage: , maxPercentRegression: 10.000%, maxPercentRelativeStandardDeviation: 10.000%, maxRegression: 0.100, maxStandardDeviation: 0.100
Test Case '-[exampleTests.exampleTests testPerformanceExample]' passed (0.348 seconds).
Test Suite 'exampleTests' passed at 2018-12-06 03:59:53.396.
     Executed 2 tests, with 0 failures (0 unexpected) in 0.348 (0.350) seconds
Test Suite 'exampleTests.xctest' passed at 2018-12-06 03:59:53.396.
     Executed 2 tests, with 0 failures (0 unexpected) in 0.348 (0.350) seconds
Test Suite 'All tests' passed at 2018-12-06 03:59:53.397.
     Executed 2 tests, with 0 failures (0 unexpected) in 0.348 (0.351) seconds 

Quelqu'un peut-il m'éclairer sur la raison pour laquelle l'exécution des tests sur le dispositif physique provoque ces erreurs ?

Edita:

Voici le message d'erreur/log de l'onglet "Messages" dans Xcode trouvé par @CPR :

enter image description here

Voici le code d'erreur/log en texte :

example.app encountered an error (Failed to establish communication with the test runner. (Underlying error: Unable to connect to test manager on 8b441d96d063b3b6abf55b06115441d160e85e67. (Underlying error: kAMDMuxConnectError: Could not connect to the device.)))

-----------------------------------------------------------------------

Solución:

Grâce à @CPR, la solution consiste à il suffit de redémarrer l'appareil . Une autre leçon apprise est de utiliser l'onglet "Messages" pour voir les journaux. et erreurs qui est l'onglet le plus à droite à côté de l'onglet "Breakpoint".

Sa réponse complète aquí .

12voto

CPR Points 323

Problème résolu dans les commentaires. Pour les futurs lecteurs, voici quelques éléments à vérifier si vous rencontrez des problèmes similaires :

  1. Vérifiez l'onglet des messages de Xcode pour rechercher les erreurs de construction.
  2. Redémarrez le dispositif/simulateur comme il convient. Cela a réglé le problème dans ce cas.
  3. Désinstaller/réinstaller l'application sur le dispositif/simulateur.
  4. Les certificats/profils d'approvisionnement sont-ils valables ? Essayez d'en générer de nouveaux et de les ré-exécuter.
  5. Cela fonctionne-t-il sur le simulateur ? Si oui, il s'agit probablement d'un problème avec le dispositif lui-même.
  6. Les points d'arrêt sont-ils activés lorsque vous exécutez le code ? Si oui, il s'agit d'un échec du test. Si non, le problème se produit avant même l'exécution des tests (comme c'était le cas ici).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X