FlutterのCI
これを読みながらメモをつける。
ざっと読んだら、チュートリアルで作ったアプリにテストをつけてみるかなあ。
概観
テストは三種類
- ユニットテスト
- ウィジェットテスト
- 統合テスト
ユニットテスト
flutter test テストファイル
でできる。
…チュートリアルでやろうと思ったけど、対象になるものがないのでは…。
思いついたら書いてみる。
ウィジェットテスト
チュートリアルになってる…?
言われたとおりにやってみるべ。
…読んでくと、RSpecって表現力豊かなんだなぁ…と感じる。
ウィジェットのテストを書く前に…main.dartがでかすぎるので分割しよう。
ファイルの分割
全部 lib/main.dart
に書いてあったけど、それをクラスごとにファイルに分割した。
$ tree lib
lib
├── main.dart
└── my_app
├── favorite_widget.dart
└── my_app.dart
lib/main.dart
MyAppを実行するのみ。
MyAppはmy_app/my_app.dart
に定義されているので、それもimportしてる。
import 'package:flutter/material.dart';
import 'my_app/my_app.dart';
void main() {
runApp(MyApp());
}
lib/my_app/my_app.dart
お気に入りボタンのFavoriteWidgetを利用しているので、favorite.dart
をimportしてる。
上位のmain.dart
は使ってないので入れてない。
import 'package:flutter/material.dart';
import 'favorite_widget.dart';
class MyApp extends StatelessWidget {
// 省略
}
lib/my_app/favorite_widget.dart
上位のmy_app.dart
は使ってないので入れてない。
import 'package:flutter/material.dart';
class FavoriteWidget extends StatefulWidget {
_FavoriteWidgetState createState() => _FavoriteWidgetState();
}
// 省略
継続的インテグレーションサービス
fastlane
ruby製のアプリ配信制御ツール。
androidやiosに対応、というより、Play StoreやApp Storeということなのかな…?
gemfileで管理するのがよさそう。
セットアップしちゃおうかと思ったけど、play storeに登録が要りそうなので、あとにしよう。
travisとcirrus-ciが2つ大きく書かれているけど、使ったことのないcirrus-ciにしてみよう。
オープンソースに対しては無料だし…。
CIの設定って…今のリポジトリ設定だと面倒なので、作り初めてしまおうか…。
静的コード解析
いろいろ読んでいると、自分で設定してるひともいますが…初心者の自分にできるわけもないので…最初は出来合いのものを持ってくるのがよさそうです。
Googleが内部で使っているLintのようで、ゆるいというひともいましたが、開発元でもあるので、試してみようと思います。
あちこち見てると…reviewdog介さなかったりして、結構マッチョなところが多いなあ…。
Github Actions