目次
テスト対象のクラス
今回はテスト用に、入力された文字列が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;
}
}
テストコードの作成
- test フォルダ下に、テストを実装する為の新規ファイルを作成します
- ファイル名は末尾が「_test.dart」となるようにしてください
- テストコードを実装します
- ‘package:flutter_test/flutter_test.dart’ を import します
- main関数を作成します
- ‘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 を設定することになり、テストは失敗します。
期待値と実際の値の比較や、通らなかった場所を教えてくれるので、この場合は「文字列の時点での判定処理」や、「全角を半角に変換する処理」を加えるなど、ソースコードを修正して再度実行してみましょう。