Closed tora-muscle closed 1 year ago
pod update
できなかった▼ エラー詳細
/Library/Ruby/Site/2.6.0/rubygems.rb:265:in `find_spec_for_exe': can't find gem cocoapods (>= 0.a) with executable pod (Gem::GemNotFoundException)
from /Library/Ruby/Site/2.6.0/rubygems.rb:284:in `activate_bin_path'
from /usr/local/bin/pod:23:in `<main>'
▼ 原因
pod
コマンド使用時に編集権限がないと怒られていた▼ 対処法
▼ 参考文献
死のうかと思うくらい焦ったし、修正に時間かかった。。。
▼ 原因
▼ 対処法
.xcodeproj
の Package Dependences で ViewInspector を追加、 TARGETS をテストターゲットに指定▼ 参考文献
パッケージ管理は全部愚直に CocoaPods で行えばいいわけじゃないのね。。。
▼ What?
▼ Why?
▼ When?
他にも優秀そうなライブラリはあるが、シンプルに書ける ViewInspector は初学者にはわかりやすかった🙌
▼ 他のライブラリ抜粋
XCTest
: https://developer.apple.com/documentation/xctest
Appleが提供するSwift言語用のテストフレームワーク。UIテスト、パフォーマンステスト、統合テスト、単体テストをサポートする。
SnapshotTesting
: https://github.com/pointfreeco/swift-snapshot-testing
ビューのスナップショットテストを行うことができるライブラリ。スナップショットと現在のビューを比較することで、ビューの変更を検出できる。
Quick/Nimble
: https://github.com/Quick/Quick
BDD(Behavior-Driven Development)スタイルのテストフレームワーク。構文が簡潔で、クリーンなテストコードを書くことができる。
Cuckoo
: https://github.com/Brightify/Cuckoo
モックライブラリ。テスト中に他のオブジェクトをシミュレートすることができ、依存関係の解決やテストの効率化を図ることができる。参考サイト: Cuckoo - GitHub
SwiftUIX
: https://github.com/SwiftUIX/SwiftUIX
SwiftUIのための拡張ライブラリ。より多くのビューやモディファイアを提供することで、より高度なUIを実現することができる。
FBSnapshotTestCase
: https://github.com/facebook/ios-snapshot-test-case
SnapShotTestingと同様に、ビューのスナップショットテストを行うことができるライブラリ。
▼ Why?
品質保証
アプリケーションの品質を保証することができる。また、テストを実行することで、不具合やエラーを発見し、修正することが可能に。
リグレッションテスト
修正や機能追加などの変更が既存の機能に影響を与えないかを確認することができる。これにより、バグを未然に防ぐ効果がある。
ドキュメンテーション
コードの意図を明確にすることができる。また、コードの変更があった場合にも、テストコードを通じてコードの動作を確認することができる。
個人的な感想
ソースの内容を細かに理解していないとテストが書けないので、コードの内容の再確認、深い理解につながる
func testDeleteTask() throws {
// task を 3 回追加
for _ in 0 ... 3 {
taskCardManager.appendTask()
}
// task カードを右にドラッグした際のジェスチャー情報をスタブ化
let dummyValue = DragGesture.Value(
time: Date().addingTimeInterval(-0.5),
location: .init(x: 20.0, y: 0),
startLocation: .zero,
velocity: .zero
)
taskCardManager.deleteTask(index: 0, value: dummyValue)
let taskCardView = TaskCardListView().environmentObject(taskCardManager)
let taskCards = try taskCardView.inspect().forEach(0)
XCTAssertEqual(taskCards.count, taskCardManager.taskCardData.count)
}
▼ 参考文献
テストコードの意義について
ViewInspector
TDD とは
▼ エラー詳細
/Library/Ruby/Site/2.6.0/rubygems.rb:265:in `find_spec_for_exe': can't find gem cocoapods (>= 0.a) with executable pod (Gem::GemNotFoundException)
from /Library/Ruby/Site/2.6.0/rubygems.rb:284:in `activate_bin_path'
from /usr/local/bin/pod:23:in `<main>'
▼ 原因
rbenv global
でver.3.2.1
を使うように設定していたが、Ruby ver.3.2.1
のディレクトリusr/local/bin
に cocoapodsが存在せず、「実行ファイルがない」と怒られていたようだ。。。podfile
に記載されている Build Target
が存在しない とも怒られたので修正。▼ 対処法
sudo gem install cocoapods -n/usr/local/bin
で cocoapods をインストールpodfile
の BuildTarget を修正▼ 参考文献
なんかまた同じエラーが発生しそう。。。🥶
🎫 関連課題
親課題
14
✨ 実現したいこと
▼ what?・why?
[x]
今までの実装分のユニットテストを書く
親課題開始時点で実装されているユニットに対してXCtest
でユニットテストを書くことで GitHub Actions での自動テストが走るようにする。[x]
こまめにテストコードを書く習慣をつける
細かい粒度でテストコードを更新、テストすることで 「後になって修正祭りで予想外に開発コストがかかりました」 なんてことを防ぎたい。🚩 やらないこと
システムテストの導入
一時開発終盤に必要に応じて導入🔀 達成条件
👀 備考
▼ 参考文献
▼ メモ