#19 Dartで学ぶテスト(単体テスト)の基本
Dartで関数を書いた後、それが正しく動くかをprintで確認するだけで済ませていませんか?この記事では、Dartで書いたコードを自動でチェックする「テスト」の基本を解説します。
なぜテストを書くのか
コードを修正するたびに、関連する処理が壊れていないかを手作業で確認するのは大変です。テストを用意しておけば、コマンド一つで動作確認ができ、安心してコードを直せるようになります。特にFlutterアプリ開発では、画面を毎回操作して確認する手間を大きく減らせます。
test パッケージを使ったテストの書き方
Dartでは標準的なtestパッケージがよく使われます。pubspec.yamlのdev_dependenciesに追加して導入します。
int add(int a, int b) {
return a + b;
}
import 'package:test/test.dart';
void main() {
test('2と3を足すと5になる', () {
expect(add(2, 3), equals(5));
});
}
test("名前", () { ... })という形でテストケースを書き、expect(実際の値, equals(期待値))という書き方で「等しいはず」を宣言します。ターミナルでdart testを実行すると結果が一覧表示されます。
異常系もテストしておく
正しい入力だけでなく、境界値(0やマイナスの値など)を渡した時の挙動もテストしておくと安心です。
test('0同士を足すと0になる', () {
expect(add(0, 0), equals(0));
});
テスト前後の共通処理をまとめる
複数のテストで共通する準備・後片付けの処理は、setUp・tearDownを使ってまとめられます。
void main() {
late Calculator calc;
setUp(() {
calc = Calculator();
});
test('初期値は0', () {
expect(calc.value, equals(0));
});
}
各テストの前にsetUpの中身が実行されるため、同じ準備コードを毎回書く必要がなくなります。
Dartならではの注意点
DartはNull安全という仕組みがあり、値が無いことを表すnullを許容する型(int?など)を扱う関数では、nullを渡した時の挙動もテストしておくと安心です。またFlutterアプリでは、画面の見た目を確認するwidget testという専用のテストの仕組みもあるので、慣れてきたらあわせて調べてみるとよいでしょう。
まとめ
テストは「正しく動くことを保証する仕組み」であり、安心してコードを修正するための土台になります。test・expect・setUpから始めて、Null安全を意識したテストにも挑戦してみてください。
関連記事
本ページはプロモーションを含みます。
参考書籍(PR)
Dartをもっと学びたい方には「ゼロから学ぶFlutterアプリ開発」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿