【Flutter】単体テストの作成・実行


目次

テスト対象のクラス

 今回はテスト用に、入力された文字列が1桁の整数かどうかを返却する関数を用意します。

/// テスト用に作成したクラス
class TestClass {
  /// 入力された文字列が1桁の整数かどうかを返却する
  static bool isOneDigitInteger(final String? input) {
    if (input == null) return false;
    final int? integer = int.tryParse(input);
    if (integer == null) return false;
    return 0 <= integer && integer <= 9;
  }
}

テストコードの作成

  1. test フォルダ下に、テストを実装する為の新規ファイルを作成します
    • ファイル名は末尾が「_test.dart」となるようにしてください
  2. テストコードを実装します
    1. ‘package:flutter_test/flutter_test.dart’ を import します
    2. main関数を作成します
    3. ‘package:flutter_test/flutter_test.dart’test 関数、expect 関数などを使用して、単体の内容を実装します

以下が、今回用意したテストコードです。(かなりざっくりですが…)

/// TestClassの単体テスト
import 'package:flutter_test/flutter_test.dart';
import 'package:application_sample/test_class.dart';

void main() {
  test('isOneDigitInteger_1桁整数', () {
    expect(TestClass.isOneDigitInteger('0'), true);
    expect(TestClass.isOneDigitInteger('9'), true);
  });

  test('isOneDigitInteger_null', () {
    expect(TestClass.isOneDigitInteger(null), false);
  });

  test('isOneDigitInteger_2桁整数', () {
    expect(TestClass.isOneDigitInteger('10'), false);
  });

  test('isOneDigitInteger_負数', () {
    expect(TestClass.isOneDigitInteger('-1'), false);
  });

  test('isOneDigitInteger_1桁整数全角', () {
    expect(TestClass.isOneDigitInteger('0'), false);
    expect(TestClass.isOneDigitInteger('9'), false);
  });
}

実装の内容については、ライブラリの公式ドキュメントをご覧になってください。

テストの実行

ファイル単位での実行

 ファイル単位での実行方法はいくつかありますが、そのうちの一つを紹介します。

1.Android Studio 画面上部のドロップダウンから、「tests in <実行したいファイル>」を選択します

2.Runボタンを押下します

 成功すると Event Log に「テスト通ったよ」と言われます

全てのテストを実行する

 「test」フォルダ以下にある ***_test.dart ファイル内のテストを一度に全て実行する方法です。

 その方法は、任意のターミナルを開き、プロジェクトのルートディレクトリにて、下記コマンドを実行するだけです。

flutter test

 全てのテストが成功すると、「全部通ったよ!」と言われます。(+37はテストの数)

テストに失敗したとき

 上記の isOneDigitInteger 関数では、全角のときは1桁の整数であっても false を返す実装になっていますが、「全角の場合でも1桁の整数として扱いたいんだ!」となった場合、テストの期待値には true を設定することになり、テストは失敗します。

 期待値と実際の値の比較や、通らなかった場所を教えてくれるので、この場合は「文字列の時点での判定処理」や、「全角を半角に変換する処理」を加えるなど、ソースコードを修正して再度実行してみましょう。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です