はじめに
こんにちは。
今回は、ユニットテストについて学んだことを共有できればと思います。
間違いやご指摘があればコメントいただければ幸いです。
ユニットテストとは?
ユニットテストとは、プログラムを構成する小さな単位(関数やメゾッド)で、
個々の機能が正しく動作するのか確認するために実施するテストを指します。
ユニットテストの担当範囲
ユニットテストは、主にビジネスロジックが意図した挙動通り動作するかを確かめるものなので、
ビジネスロジックに関した関数、クラス、メゾット、モジュール単位(言い方違うだけ)で実装します。
APIのPOST,GETなどは、結合テストで、
WIdgetのUIなどはWidgetテストでそれぞれ行うのが通常です。
これはまた後日記事にさせていただければと思います。
実装方法
パッケージ
以下のテストパッケージを使用します。
以下のどちらかのコマンドをプロジェクトルートで叩いてください。
dart pub add test --dev
///dart
flutter pub add test --dev
///flutter
テストファイルの作成
まずは、プロジェクトのルートでtestディレクトリを作成します。
その上で、テストディレクトリ内にテストしたいファイル名の後ろに、
_testをつけて、新規にプロジェクトファイルを作成します。
例えば、sample.dartファイルに対するテストファイルを作成したい場合は、
以下のように、sample_test.dartを作成します。
project_app/
lib/
sample.dart
test/
sample_test.dart
階級を合わせる。※注意点
テストコードを書きたいファイルと同じディレクトリ構成で作成しなければいけない。
project_app/
lib/
controller/
sample.dart
test/
controller/
sample_test.dart
テスト実装
以下がテストコードのテンプレです。
test("テスト名", () {
// 前処理
// クラスのインスタンスを生成したりなどする
expect("処理や変数", "処理による結果や変数の期待値");
});
実際にコードを見てみましょう。
test('first test', (){
var calu = 2 + 3;
expect(calu, 5);
});
テスト実行
プロジェクトのルートディレクトリで以下のコマンドを叩きます。
flutter test
//全てのテストコードを実行するコマンド
flutter test test/sample_test.dart
//特定のテストファイルを実行するコマンド
結果
成功していた場合↓↓
~~~@~ プロジェクト名 % flutter test
00:10 +2: All tests passed!
失敗していた場合↓↓
flutter test
00:02 +0 -1: /Users/~/StudioProjects/プロジェクト名/test/sample_test.dart: first test [E]
Expected: <6>
Actual: <5>
package:matcher expect
test/sample_test.dart 7:5 main.<fn>
Mockを用いる。
Mockを用いてtestを実行する方法は今後追記するか、別記事にして書こうと思います。
参考記事
最後に
最後まで読んでいただきありがとうございました。
何かご指摘等あればコメントいただけると大変励みになります。
ありがとうございました。