web-dev-qa-db-fra.com

La cible de test X a rencontré une erreur (sortie inattendue anticipée, l'opération n'a jamais été amorcée - aucun redémarrage n'est tenté

J'ai commencé à travailler avec OCMock pour écrire des scénarios de test pour le projet existant que j'ai intégré à mon espace de travail. Après avoir suivi toutes les étapes mentionnées dans ce link

Quand j'ai exécuté mon cas de test pour la première fois, cela me donne cette erreur. Je l'ai cherché et essayé de suivre certaines des solutions telles que "créer une nouvelle cible", "redémarrer Xcode", mais cela ne m'a pas aidé. Une idée?

71
Varun Mehta

J'ai mes notes et des applications de démonstration pour Cocoapods et Carthage ici https://github.com/onmyway133/TestTarget

  • Assurez-vous que tous les cadres sont liés aux cibles de test
  • Configurez Runpath Search Paths pour qu'il pointe vers $(FRAMEWORK_SEARCH_PATHS)

Plus d'informations

110
onmyway133

J'utilise carthage et le problème pour moi était de rechercher des dépendances dans une cible de test. Réparer:

Ajoutez $(PROJECT_DIR)/Carthage/Build/iOS à Runpath Search Paths

Vous pouvez trouver la référence ici: numéro de Carthage

17
Radosław Cięciwa

Il pourrait y avoir une autre solution si vous utilisez CocoaPods et que la cible de test de l'interface utilisateur est intégrée à la cible de l'application, ce qui est malheureusement le cas dans le modèle par défaut (pod init).

Essayez de déplacer la cible de test d'interface utilisateur en dehors de la cible d'application comme suit: 

de:

platform :ios, '11.0'
use_frameworks!

target 'MyApp' do
  # Pods for MyApp

  target 'MyAppUITests' do
    inherit! :search_paths
    # Pods for testing

  end
end

à:

platform :ios, '11.0'
use_frameworks!

# Pods shared between MyApp and MyAppUITests    

target 'MyApp' do
    # Pods for MyApp only

end

target 'MyAppUITests' do
    # Pods for testing

end

Le crédit va à SpacyRicochet dans ce fil de discussion: https://github.com/CocoaPods/CocoaPods/issues/4752#issuecomment-305101269

8
hujunfeng

Dans mon cas, il n'y avait aucun problème avec les fichiers liés . Le simulateur était bloqué par le message que l'application avait déclenché, comme: "Le nom de l'application aimerait vous envoyer des notifications". Appuyez sur OK et la prochaine fois que mes XCTests fonctionnent correctement.

5
FeltMarker

Juste pour partager mon expérience à propos de cette erreur:

J'utilise fastlane + cocoapods.

J'ai un espace de travail avec 2 frameworks dynamiques:

  • Un cadre
  • B. cadre

Les dépendances:

  • Un dépend AFNetworking utilisant des cocoapods
  • B dépend de A

Les dépendances sont définies dans le fichier podfile.

L'erreur s'est produite lors de l'exécution des tests de la structure B.

Dans mon cas, le problème était lié à la dépendance manquante à AFNetworking dans B.framework target.

Ajout d’une dépendance de pod à AFNetworking dans B.framework dans Podfile, tout a été résolu.

Ainsi, même si la cible B compile correctement, AFNetworking n’était pas intégré à l’application de test B et le simulateur n’a pas pu exécuter l’application de test B, ce qui génère une erreur "très significative" (*) .

(*) merci à Apple pour cela!

4
Lubbo

Ma solution consistait à ajouter une "phase de copie du fichier" à ma cible de test . Là, j'ai défini la destination sur Frameworks et ajouté mon cadre avec le signe +.

4
leizeQ

Mon cas était spécial. J'ai utilisé 2 fichiers en tant que classes de test. l'un fonctionnait parfaitement et l'autre avait cette erreur.
Les deux sont liés au même cadre.

Solution

DONNÉES DÉRIVÉES CLAIRES

Fenêtre => Projets => Supprimer (sur votre projet)

Bonne chance .__ et bon test!

3
Yitzchak

Dans mon cas, je n’avais pas ajouté de phase d’exécution de script pour les bibliothèques Quick et Nimble, que j’ai intégrées avec Carthage.

2
Ben Thomas

Dans mon cas, Build Active Architecture Only était défini sur YES.

Dans le projet et les cibles: Construire Paramètres -> Architectures -> Construire Architecture active uniquement doit être NON au lieu de OUI

2
Mihriban Minaz

J'avais le même problème et j'essayais déjà tout ce qui était proposé ici sans aucun succès.

L'exécution des tests sur un simulateur différent a résolu le problème pour moi. Après cela, le simulateur d’origine n’a plus échoué non plus.

2
fredpi

Wow, j'ai perdu beaucoup de temps à ce sujet, mon lot de tests avait sélectionné "l'application hôte" pour mon application. Les autres lots de tests ne l'ont pas été. 

Je m'attends à ce que cette solution ne soit peut-être pas la bonne solution pour chaque situation, mais mes tests visaient principalement à tester la bibliothèque dynamique et ne nécessitaient pas vraiment d'application hôte. Je devais obtenir l'erreur ci-dessus, désactiver cette option m'a permis d'exécuter les tests sans obtenir cette erreur et les points d'arrêt fonctionnaient. J'utilisais MacOS mais cela fonctionne probablement de la même manière dans d'autres environnements. Je m'attends à ce que cette solution ne soit peut-être pas la bonne solution pour chaque situation, mais mes tests visaient principalement à tester la bibliothèque dynamique et ne nécessitaient pas vraiment d'application hôte. 

Sur la série de tests Sélectionnez Général -> Test -> Définissez "Application hôte" sur Aucune. 

2
possen

Au cours de la création de Cocoa Touch Framework, toutes les tentatives d’exécution de tests portaient le même message d’erreur que celui écrit par OP.

Je l'ai corrigé en changeant la configuration de construction de TEST de Debug à Release.

Étape 1

 enter image description here 

Étape 2

 enter image description here 

Étape 3

 enter image description here 

Note : Aucune configuration supplémentaire de Runpath Search Paths n'a été nécessaire.

J'utilise des Cocoapods dans les versions 1.6.1 et Xcode 10.1

1
Kamil Harasimowicz
I tried many different options but none helped me except below and wasted lot of time, posting this so that really help and save time on this: 

Follow all of the instructions for Full Manual Configuration

https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md#full-manual-configuration
Tips
When you come to the part where you are executing xcodebuild, if the build fails, and the log mentions "RoutingHTTPServer" or "YYCache", add these two frameworks on the Build Phases tab of the WebDriverAgentRunner target
Open the WebDriverAgent.xcodeproj

Select 'Targets' -> 'WebDriverAgentRunner'

Open 'Build Phases' -> 'Copy frameworks'

Click '+' -> add RoutingHTTPServer

Click '+' -> add YYCache
https://github.com/facebook/WebDriverAgent/issues/902#issuecomment-382344697
https://github.com/facebook/WebDriverAgent/issues/902#issuecomment-383362376

The build/test may also fail due to the WebDriverAgentRunner app/developer being untrusted on the device. Please trust the app and try again.

While trying to access the WebDriverAgent server status, if it tries to connect on port 0, hardcode port 8100 in appium-xcuitest-driver/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.m

Original line: server.port = (UInt16)port;
New line: server.port = 8100;
https://github.com/facebook/WebDriverAgent/issues/661#issuecomment-338900334
1
Ravi

Voudrais partager ma réponse en espérant que cela pourrait faire gagner du temps à quelqu'un.

Pour moi, le fichier .m n'était pas correctement lié sous Build Phases -> Compile Sources

0
Varun Mehta

Dans mon cas, j'avais un projet complètement propre avec des tests vides par défaut . Si j'ai ajouté un pod, j'ai reçu cette erreur . La solution était qu'au moins un fichier de la cible de test devrait importer Foundation.

import XCTest
import Foundation

@testable import CVZebra

class CVZebraTests: 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.
    }

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

}
0
MarekM

Dans mon cas, je devais retirer $(inherited) de autres drapeaux de lieur dans ma cible de test d'interface utilisateur. J'ai installé des bibliothèques statiques via des cocoapodes.

0
zuziaka

Certains paramètres de projet ajoutés automatiquement viennent avec Xcode 10, et ils viennent parfois, pas tout le temps. Après avoir téléchargé Xcode 10, redémarrez votre ordinateur. C'est ce qui a réglé ça pour moi. Aucune de ces réponses ne l'a corrigé pour moi. J'espère que ça aide. J'aimerais pouvoir donner une meilleure réponse. 

0
ScottyBlades

Dans mon cas, il y avait un problème avec mon application dans le simulateur. Avant que le problème ne se pose, j'ai traité une migration de base de données (royaume) qui a échoué et détruit ma base de données. Donc, tout a bien fonctionné pour moi après avoir supprimé l'application sur le simulateur.

0
Sandu

Passer de Xcode 9.4.1 à Xcode 10.1 a résolu le problème dans mon cas.

0
pmdj

Pour moi, je devais "faire confiance" au développeur dans "Gestion des périphériques" sous "Paramètres -> Général" sur mon appareil. (Paramètres -> Général -> Gestion des appareils -> DeveloperID -> "Faire confiance à l'application") Comme j'exécutais l'application via un chargement latéral avec mon identifiant Apple.

0
infiniteLoop

Dans mon cas, mes paramètres de construction -> Architectures étaient définis uniquement pour armv7 et j'ai changé pour ARCHS_STANDARD qui était identique à mon application hôte

0
Felipe FMMobile

Si quelqu'un éprouve encore ce problème ceci sa réponse m'a aidé. Définir Toujours intégrer les bibliothèques Swift Standard à Non dans les paramètres du projet. Je l'ai fait pour la cible de test d'interface utilisateur.

0
stellz

pour moi le problème était le fichier Pod
J'ai créé une nouvelle cible, mais j'ai oublié d'ajouter une cible dans le fichier pod 

target 'mobilesdkIntegrationTests' do
  // write here any predefined pods if any, like
  testing_pods
end

il suffit d'ajouter la cible dans le fichier pod pour résoudre le problème 

0
Sultan Ali

Dans mon cas, j'avais déclaré une propriété en lecture seule dans un fichier d'en-tête:

// In .h file
@property (nonatomic, readonly) NSUInteger count;

mais j'ai oublié d'ajouter cette déclaration au .m afin qu'un générateur soit généré:

// In .m file
@property (nonatomic, assign) NSUInteger count;

Silly erreur, pas tout à fait sûr pourquoi il se manifeste dans cette erreur, mais en ajoutant cette ligne au fichier .m corrigé le problème.

0
JohnG