ユニットテストの始め方

Page content

Flutter のユニットテストの一番簡単な始め方を紹介します。

このエントリーをはてなブックマークに追加

ユニットテストの始め方

次のようなPersonクラスを対象にユニットテストを行います。

class Person {
  final String name;
  final int age;

  Person({@required this.name, @required this.age});

  Person.fromJson(Map<String, dynamic> json)
    : name = json["name"],
	  age = json["age"];
}

testパッケージの導入

pubspec.yamltestを追加します。バージョンを指定しない場合はその時の最新版がダウンロードされます。

dev_dependencies:
  test:

テストファイル作成

ディレクトリの必要なファイルを抜粋すると以下のようになります。

person_app/
  lib/
    person.dart
  test/
    person_test.dart

person.dartに先ほどのテスト対象のクラスが入っています。 person_test.dartにテストコードを記載していきます。

テストファイルはすべてtestディレクトリ以下に配置してください。

testディレクトリ以下にサブディレクトリを作っても問題ありません。

テストファイルの記述

person_test.dartにテストコードを記載していきます。

テストに必要なtestパッケージとテスト対象のコードを読み込みます。今回は JSON のデコードも行うのでconvertパッケージも読み込んでいます。

JSON デコードに関してはこちらを参照してください。

今回は通常のコンストラクタと名前付きコンストラクタそれぞれのテストを行います。両方Personクラスなので、groupを使ってグルーピングします。わかりやすい名前をつけると良いでしょう。

// JSON のデコードを行うため
import 'dart:convert';

// テストパッケージとテスト対象のコードを読み込みます
import 'package:test/test.dart';
import 'package:person_app/person.dart';

void main() {
  group('Person Test', () {
    test('Init', () {
      final mario = Person(name: "mario", age: 22);

      // 期待値とチェック
      expect(mario.name, "mario");
      expect(mario.age, 22);
	});

    test('Init fromJson', () {
      var jsonString = '''
        {"name": "mario", "age": 22}
      ''';
      Map<String, dynamic> jsonData = json.decode(jsonString);

      final mario = Person.fromJson(jsonData);

      // 期待値とチェック
      expect(mario.name, "mario");
      expect(mario.age, 22);
    });
  });
}

expectを使って期待値とチェックを行います。期待値と一致しない場合テストが失敗します。

expectの第二引数にはMatcherと呼ばれる仕組みで複雑な期待値のチェックができます。詳しくはAPIドキュメントを確認してください。

テストの実行

コマンドラインではflutter testを実行してください。

AndroidStudioではperson_test.dartを右クリックしてtests in counter_test.dartを実行します。

公式ドキュメント

このエントリーをはてなブックマークに追加