テストと統合
CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 106/110。
チャレンジ
簡単前回のレッスンでは、ライブラリの在庫を管理するための管理者インターフェースを構築しました。今回は、ライブラリ管理システムのすべてのコンポーネントが正しく連携して動作することを検証する包括的なテストスイートを作成し、すべてを統合します。
すべてのライブラリ機能(書籍、ユーザー、管理者、貸出、検索、在庫管理)が、組み合わせて使用されたときに期待通りに機能することを確認する統合テストを実行する LibraryTester クラスを追加します。
book.dart,user.dart,admin.dart,library.dart: 既存のクラスは変更せずにそのまま保持してください。library_tester.dart: ライブラリシステムを検証する新しいLibraryTesterクラスを作成します。このクラスはLibraryインスタンスを持ち、以下のテストメソッドを含める必要があります。setupTestData()- 管理者 (A001,Test Admin) を登録し、管理者経由で2冊の書籍 (978-0-01,Book One,Author Aと978-0-02,Book Two,Author B) を追加し、ユーザー (U001,Test User) を登録します。testBorrowing()- ユーザーのために1冊目の書籍を借り、再度借りようと試み(失敗するはずです)、その後返却します。完了後にBorrowing test: PASSと出力してください。testSearch()- タイトルにBookを含む書籍を検索し、Search found: X books(Xは件数) と出力し、次にSearch test: PASSと出力します。testAdminOperations()- 管理者を使用して2冊目の書籍を削除し、書籍数をBooks after removal: Xとして出力し、次にAdmin test: PASSと出力します。runAllTests()-setupTestData()を呼び出し、次に3つのテストメソッドを順番に実行し、最後にAll tests completed!と出力します。
main.dart:LibraryTesterインスタンスを作成し、runAllTests()を呼び出してフルテストスイートを実行します。
期待される出力:
A001 added "Book One"
A001 added "Book Two"
U001 borrowed "Book One"
Book not available
U001 returned "Book One"
Borrowing test: PASS
Search found: 2 books
Search test: PASS
A001 removed "Book Two"
Books after removal: 1
Admin test: PASS
All tests completed!自分で試してみよう
import 'library_tester.dart';
void main() {
// TODO: LibraryTesterのインスタンスを作成し、runAllTests()を呼び出す
}
オブジェクト指向プログラミングのすべてのレッスン
4Null Safety
Null Safety 入門Nullable と Non-Nullable? 演算子と ! 演算子late キーワードと Null SafetyNull-Aware 演算子クラスにおける Null Safetyまとめ:ユーザープロフィールシステム10コレクションとジェネリクス
List, Set, Map の概要型安全なコレクションジェネリッククラスジェネリックメソッドジェネリクスの制約Iterable と Iteratorまとめ:ジェネリックなストレージ