Je reçois le message d'erreur LLVM Profile Error: Failed to write file "default.profraw": Permission denied
après l'exécution de tests unitaires sous Xcode. Je ne sais pas où Xcode essaie d'écrire ce fichier.
Pour quel dossier dois-je accorder des autorisations?
Essayez de définir CLANG_ENABLE_CODE_COVERAGE = NO
dans vos paramètres de construction pour la cible à tester et les tests eux-mêmes.
Edit : Veuillez voir la réponse de @ kasyanov-ms.
Nettoyer mon dossier de construction a éliminé l'erreur pour moi. (Option-Shift-Command K.) J'utilise Xcode version 9.2 (9C40b). L'erreur s'est produite lorsque j'ai ajouté un ensemble d'images à mes Assets.xcassets. Après un nettoyage complet, l'erreur a disparu.
Xcode 11 beta 1:
Il s'agit d'un problème connu lorsque vous essayez d'utiliser la couverture de code par rapport aux cibles du simulateur. Vous devez utiliser une version bêta ultérieure ou utiliser une couverture sur un périphérique physique.
La solution à cela pourrait être très simple: assurez-vous que votre test (la méthode de votre classe XCTestCase) est nommé correctement! Selon la documentation d'Apple, le test doit avoir un préfixe "test". Si vous créez un test sans respecter les conventions de dénomination, vous recevrez l'erreur LLVM que vous avez mentionnée.
A titre d'exemple, j'ai eu un test appelé "ClassifierTest ()", qui m'a donné cette erreur lorsque j'ai cliqué sur le bouton "play" pour la classe. Ce qui m'a fait comprendre, entre autres choses, c'est qu'il n'y avait pas de bouton "Lecture" à côté du test lui-même (car il ne l'a pas reconnu comme test valide car il n'avait pas été nommé correctement). Le changer en testClassifier () a résolu le problème.
Voici ce que disent les docs d'Apple:
Une méthode de test est une méthode d'instance d'une classe de test commençant par le test de préfixe, ne prend aucun paramètre et retourne void
J'espère que cela aide quelqu'un à gagner du temps!
Cela n’est peut-être utile pour personne d’autre, mais j’ai été touché lorsque j’avais placé une exit(EXIT_FAILURE)
dans mon code lors de la refactorisation d’un morceau de code. J'avais supposé que la mettre dedans planterait l'application juste là et me montrerait qu'elle s'était écrasée là-bas, mais au lieu de cela, cela me donnait cette erreur et ne montrait pas où elle s'était écrasée.