【Flutter】ユニットテストを学ぶ
はじめに
プログラムを書いているとき、「このコードは本当に正しく動くのかな?」と思ったことはありませんか?機能を追加したり、既存の機能を変更したりするとき、アプリが引き続き正常に動作することを確認するには、テストを書くことが大切です。
この記事では、ユニットテストを書く方法をメモとして記しておきます。
参考
1. テスト用のパッケージを追加する
まずは、テストに必要なパッケージを追加しましょう。Flutter でテストを書くには、test
パッケージを使います。
ターミナルで以下のコマンドを実行します:
flutter pub add dev:test
このコマンドは、test
パッケージを開発時のみ使う依存関係として追加します。
2. テストファイルを作成する
次に、テスト対象のクラスとテストファイルを作成します。
この例では、次の 2 つのファイルを作成します:
-
lib/counter.dart
- テスト対象のクラスを含むファイル -
test/counter_test.dart
- テスト自体を含むファイル
フォルダ構造は以下のようになります:
counter_app/
lib/
counter.dart
test/
counter_test.dart
3. テスト対象のクラスを作成する
では、テスト対象となる「ユニット」を作成します。今回は、lib/counter.dart
ファイルの中にCounter
クラスを作成します。
このクラスは、0 から始まる値を増やしたり減らしたりする機能を持ちます:
4. クラスのテストを書く
test/counter_test.dart
ファイルの中に、最初のユニットテストを書きましょう。
テストはtest
関数を使って定義し、結果が正しいかどうかをexpect
関数でチェックします。これらの関数は両方ともtest
パッケージから提供されています。
// testパッケージとCounterクラスをインポート
import 'package:counter_app/counter.dart';
import 'package:test/test.dart';
void main() {
// テストケースを定義
test('Counterの値が増加するべき', () {
// テスト用のCounterインスタンスを作成
final counter = Counter();
// テスト対象のメソッドを実行
counter.increment();
// 期待される結果と実際の結果を比較
expect(counter.value, 1);
});
}
このテストは、Counter
クラスのincrement
メソッドが値を 1 増やすことを確認しています。
5. 複数のテストをグループ化する
関連するテストを一緒に実行したい場合は、group
関数を使ってテストをグループ化できます。
以下のように、複数のテストケースをグループ化してみましょう:
このようにグループ化することで、関連するテストを一度に実行できます。
6. テストを実行する
これでテストを実行する準備ができました。テストを実行する方法はいくつかあります。
VSCode でテストを実行
-
counter_test.dart
ファイルを開く - 赤枠の虫アイコンを押す
- 「実行とデバッグを開始」を選択
F5 のショートカットにより、実行することも可能。
ファイル内容のテストコードの横のチェックアイコンを押すことでも、実行可能です。
ターミナルでテストを実行する
ターミナルからテストを実行することもできます。プロジェクトのルートディレクトリから以下のコマンドを実行します:
flutter test test/counter_test.dart
特定のグループのテストだけを実行したい場合は、以下のようにします:
flutter test --plain-name "カウンターのテスト"
テストコマンドのヘルプを表示するには:
flutter test --help
テストの基本的な考え方
ユニットテストを書くときは、次のような流れで考えるとわかりやすいです:
- 準備(Arrange): テストに必要なオブジェクトを準備します
- 実行(Act): テスト対象のメソッドを実行します
- 検証(Assert): 結果が期待通りかどうかを確認します
この「準備・実行・検証」の流れは、テストを書く際の基本的なパターンとして覚えておくと役立ちます。
// 準備(Arrange)
final counter = Counter();
// 実行(Act)
counter.increment();
// 検証(Assert)
expect(counter.value, 1);
まとめ
この記事では、Flutter でユニットテストを始める方法を紹介しました。ユニットテストを書くことで、アプリの品質を高め、バグを早期に発見できます。
基本的な手順をおさらいしましょう:
- テスト用のパッケージを追加する
- テストファイルを作成する
- テスト対象のクラスを作成する
- クラスのテストを書く
- 複数のテストをグループ化する
- テストを実行する
小さなテストから始めて、徐々にテストの範囲を広げていきましょう。
サンプルコード
Discussion