Xcodeで単体テストを実行すると、LLVM Profile Error: Failed to write file "default.profraw": Permission denied
エラーが発生します。 Xcodeがこのファイルに書き込もうとしている場所がわかりません。
どのフォルダーにアクセス許可を付与する必要がありますか?
テスト対象のビルドとテスト自体のビルド設定でCLANG_ENABLE_CODE_COVERAGE = NO
を設定してみてください。
編集:@ kasyanov-msによる回答をご覧ください。
これは他の人には役に立たないかもしれませんが、コードのリファクタリング中にコードにexit(EXIT_FAILURE)
を配置したときにこれにぶつかりました。私はそれを置くとアプリがすぐにクラッシュし、そこでクラッシュしたことを見せると思っていましたが、代わりにこのエラーを与えてクラッシュした場所を表示していませんでした。
ビルドフォルダーをクリーニングすると、エラーがなくなりました。 (Option-Shift-CommandK。)Xcodeバージョン9.2(9C40b)を使用しています。 Assets.xcassetsに一連の画像を追加すると、エラーが発生しました。完全にクリーンアップすると、エラーはなくなります。
Xcode 11ベータ1:
これは、シミュレータターゲットに対してコードカバレッジを使用しようとした場合の既知の問題です。後のベータ版を使用するか、物理デバイスに対してカバレッジを実行する必要があります。
これに対する解決策は非常に簡単です。テスト(XCTestCaseクラスのメソッド)の名前が正しいことを確認してください! Appleのドキュメントによると、テストには「test」というプレフィックスが必要です。命名規則に準拠せずにテストを作成すると、言及したLLVMエラーが表示されます。
例として、「ClassifierTest()」というテストがあり、クラスの「再生」ボタンをクリックするとこのエラーが発生しました。何よりも私をひっくり返したのは、テスト自体の横に「再生」ボタンがなかったということです(適切な名前が付けられていないため、有効なテストとして認識されなかったため)。これをtestClassifier()に変更すると、問題が修正されました。
Appleのドキュメントの内容は次のとおりです。
テストメソッドは、プレフィックステストで始まり、パラメーターを取らず、voidを返すテストクラスのインスタンスメソッドです。
これが誰かの時間節約に役立つことを願っています!