【エラー格闘編】SwiftUIテストエラー：testInitialValue(): No target application path specified via test ~で行った複数対処法

こんにちわ、だいちです。

希望の会社に内定頂き
現在はFlutterの独学勉強を中止し研修に取り組んでおります。

４~5時間格闘したエラーが解決し
関連記事も少なく、Chat-GPTに聞いたり
参考文献を読み漁りと時間がかかったのでこちらに載せておきます。


## 目次
[-開発環境](#開発環境)
[-1.経緯](#1経緯)
[-2.原因](#2原因)
[-3.SwiftUIテストエラー①_Target_Applicationの確認](#3swiftuiテストエラー_target_applicationの確認)
[-4.SwiftUIテストエラー②_クリーンビルドフォルダの実行とDerived_Dataフォルダのリセット](#4swiftuiテストエラー_クリーンビルドフォルダの実行とderived_dataフォルダのリセット)
[-5.SwiftUIテストエラー③_IDEPreferLogStreamingの設定](#5swiftuiテストエラー_idepreferlogstreamingの設定)
[-6.SwiftUIテストエラー④_UITestファイルの作成](#6swiftuiテストエラー_uitestファイルの作成)
[-7.全体コード](#7全体コード)
[-参考文献](#参考文献)
[-最後に](#最後に)


## 開発環境
・macOS Sonoma 14.5
・Flutter 3.22.2


## 1.経緯
・テストコードを書くためにTestファイルを取り入れた
・テストを実行したところ下記エラーが発生

```:エラー文
testDecrementButton(): No target application path 
specified via test configuration〜//以下略
```
・上記エラーから対策を見つけ試したが
　エラーにエラーが重なり複数対策を行った
・調べても対応方法が一致しているものが見つからなかったため
　備忘録として残すこととした
・おそらく近道はエラー[①](#3swiftuiテストエラー_target_applicationの確認)と[④](#6swiftuiテストエラー_uitestファイルの作成)を行えば解決すると思います。


## 2.原因
・ターゲットが選択されていない（今回はされていた）
・IDEPreferLogStreamingの設定をしていなかった？
・UITestファイルが作成されていなかった


## 3.SwiftUIテストエラー①_Target_Applicationの確認
・下記記事を参考に
　General > Testing > Target Applicationを確認する
※こちらは問題なく反映されておりました
 
https://jimaru.blog/programming/swift/no-target-application-path-specified-error/

<img width="70%" alt="SwiftUIテストエラー①.png" img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3121562/421f8708-5a0d-dfc0-9b02-0223b5fd8230.png">

<img width="70%" alt="SwiftUIテストエラー②.png" img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3121562/60cd42ed-f4e2-2944-4cc8-4a5a59e37b7f.png">





## 4.SwiftUIテストエラー②_クリーンビルドフォルダの実行とDerived_Dataフォルダのリセット
・Xcodeメニュー→Product→Clean Build Folderを行う
・再度ビルドする
<img width="50%" alt="SwiftUIテストエラー③.png" img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3121562/296c57d1-6e52-55d7-ab33-8696a2c8df9b.png">



・Xcodeメニュー→Xcode→Setting→Locations→Derived Dataファイル内から
　Your Project Name-bilpftnsyalxpcheydpsonasgusqフォルダを削除
<img width="50%" alt="SwiftUIテストエラー④.png" img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3121562/3913f160-a9ab-9704-ae6b-01af2fb27948.png">



## 5.SwiftUIテストエラー③_IDEPreferLogStreamingの設定
・上記対応をするとテスト時ではなくビルド時にエラーが発生しました
　この辺りからエラーを彷徨います。。。笑
　エラー対応②はChat-GPT対応です。たまに悪い仕事しますこいつ笑

```php:ビルドエラー文
Logging Error: Failed to initialize logging system. 
Log messages may be missing. 

If this issue persists, try setting IDEPreferLogStreaming=YES 
in the active scheme actions environment variables.

```
IDEPreferLogStreamingの環境設定をYESにしろとのこと


・Xcodeメニュー→Xcode→Product→Scheme→Edit Schemeをクリック
・左側のリストからRun→ArgumentsタブからEnvironment Variablesに
　Nameに「IDEPreferLogStreaming」、Valueに「YES」を<font color="Red">入力</font>する
 <img width="70%" alt="SwiftUIテストエラー⑤.png" img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3121562/ef7e938e-0996-351d-8847-e42f36b6a92c.png">


 

## 6.SwiftUIテストエラー④_UITestファイルの作成
・TARGET内のTestsファイルとUITestsファイルを見比べたところ
　UITestsファイルのBuild PhasesのCompile Sourceが0になってました。
 <img width="70%" alt="SwiftUIテストエラー⑥.png" img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3121562/00164d60-3661-bfe1-7ab2-037889a15c91.png">

<font color="Red">これによりテストの際にビルドする対象がないというエラーでした。</font>
・Testファイルを右クリック→New File→UI Test Case Class→Next→Next[^1]
[^1]:今回はTargetがありファイルがない前提で記事を書いてます。
Targetもファイルもない場合は
XcodeメニューからFile→New→Target→UI Testing Bundleで
作成して下さい

・TargetsをUITest（Compile Sourceが0となっていたファイル）にチェック→Create
 <img width="70%" alt="SwiftUIテストエラー⑦.png" img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3121562/8780bf7e-7e3d-5a93-43f0-04ccf5b4536a.png">


この処理後にテストすれば成功しました！！！


## 7.全体コード
今回はありません。


## 参考文献
ヂまるBlog. 「XCUIApplication()でNo target application path specifiedエラー」.　2024/07,
https://jimaru.blog/programming/swift/no-target-application-path-specified-error/, (参照 2024-07-17)


## 最後に
・SwiftUIでも日本語のYoutubeや参考文献が少ないイメージがありました
・Chat-GPTだけでも難しい解決があるのも実感しました
・参考にして頂けると幸いです