試していた以上のことは無いが、やったことのメモ
- UnitTestを書いてみた
- InstrumentationTestを書いてみた
- GitHubActionsでUnitTestを動かしてみた
- GitHubActionsでInstrumentationテストをFirebaseTestLabを使って動かしてみた
UnitTestを書いてみた
書いて動かしてみた。もともとそんなに難しいことではないので、割と楽にできた気がする。
mockkを使ってモックを挟んだテストも試した。contextを使うクラスの単体テストは試していない。
今はテストコードを全くかけない状態なので、contextを使用しないものをunitテスト書いて、contextが必要なものはInstrumentationTestとして担保できればいいかなと思っている。
規模的に厳しかったり別の課題感を実感した時に改めて勉強するつもり
InstrumentationTestを書いてみた
書いて動かしてみた。
初期表示のテストやタップ後の画面遷移のテストはかけた。コルーチンの非同期処理の待ち合わせも書いた。
非同期の待ち合わせが難しいイメージがあって、それの書き方がわかったのは大きい。ハードルが下がった
GitHubActionsでUnitTestを動かしてみた
GitHubActionsでtestを動かした。このステップでCI用のファイルを作った。
gradleコマンドを実行しているだけなので特に詰まったポイントは無かった
GitHubActionsでInstrumentationテストをFirebaseTestLabを使って動かしてみた
意外と時間がかかった。
TestLabの初回実行は時間がかかるので、手元のコンソールで試した時の待ち時間でまず消費した。初回はほぼ一日待っていた。
で、日をまたいでコマンドを再実行してみると動かない。なぜなのかと調べていたら、改行 \
のコピーが正しく認識されずにそこでコマンドが終わったと判断され、昨日実行できたコマンド動かないなぜ・・・というところで時間を使った。
次に、Firebase側のサービスアカウントの準備を間違って、CIでそのアカウント使ったときだけ実行失敗する状態になりそこでも時間を使った。ちゃんと編集者のロールを作ったら解決した。
最後に、Testの設定をコマンド引数から設定ファイルへ移行しようとして、ファイル名の_
と-
を間違って何故か動かない、みたいな状態が続き、そこでも数日使った。
トータルで見ると特別難しいことは無かったはずだが、初見ならではの初歩的ミスを繰り返して一週間使った。
一通りやってみて、なんとなくテストコードを書くときの全体像をつかめた。会社のCIは同僚が作ってくれているものが多くてそれに乗っかっていただけだが、今後は自分でCIを設定してテストコードの戦略を考えていける気がする。