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 :
-
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.
-
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.
-
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).
-
J'utilise le fichier .xcworkspace (parce que j'utilise Pods).
-
J'ai un plan de construction qui est le projet.
-
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.
-
J'ai essayé d'exécuter de nouveaux tests sur une branche différente, mêmes problèmes.
-
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.
-
J'ai également constaté les mêmes problèmes en exécutant les tests sans le simulateur.
-
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 :
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é :
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 :
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í .