Testowanie i integracja
Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 106 z 110.
Wyzwanie
ŁatwyW poprzedniej lekcji utworzono interfejs administratora do zarządzania zasobami biblioteki. Teraz czas połączyć wszystko w całość, tworząc kompleksowy zestaw testów, który sprawdzi, czy wszystkie elementy systemu zarządzania biblioteką poprawnie ze sobą współpracują.
Dodasz klasę LibraryTester, która uruchamia testy integracyjne wszystkich funkcji biblioteki — sprawdzając, czy książki, użytkownicy, administratorzy, wypożyczanie, wyszukiwanie i zarządzanie zasobami działają zgodnie z oczekiwaniami, gdy są używane razem.
book.dart,user.dart,admin.dart,library.dart: Pozostaw istniejące klasy bez zmian.library_tester.dart: Utwórz nową klasęLibraryTester, która sprawdza działanie systemu bibliotecznego. Powinna zawierać instancjęLibraryoraz następujące metody testowe:setupTestData()— rejestruje administratora (A001,Test Admin), dodaje dwie książki za pośrednictwem administratora (978-0-01,Book One,Author Aoraz978-0-02,Book Two,Author B) i rejestruje użytkownika (U001,Test User)testBorrowing()— wypożycza użytkownikowi pierwszą książkę, próbuje wypożyczyć ją ponownie (próba powinna się nie powieść), a następnie ją zwraca. Po zakończeniu wypisujeBorrowing test: PASS.testSearch()— wyszukuje książki, których tytuł zawieraBook, wypisujeSearch found: X books, gdzie X oznacza liczbę wyników, a następnie wypisujeSearch test: PASStestAdminOperations()— usuwa drugą książkę za pomocą administratora, wypisuje liczbę książek w formacieBooks after removal: X, a następnie wypisujeAdmin test: PASSrunAllTests()— wywołujesetupTestData(), następnie uruchamia po kolei wszystkie trzy metody testowe, a na koniec wypisujeAll tests completed!
main.dart: Utwórz instancjęLibraryTesteri wywołajrunAllTests(), aby uruchomić cały zestaw testów.
Oczekiwany wynik:
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!Spróbuj swoich sił
import 'library_tester.dart';
void main() {
// TODO: Utwórz instancję LibraryTester i wywołaj runAllTests()
}
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy OOP
Pliki zewnętrzneBiblioteki i importyWprowadzenie do OOPKlasy a obiektySłowo kluczowe thisMetodyZmienne instancjiPodstawy konstruktorówPowtórka – prosty kalkulator4Bezpieczeństwo wartości null
Wprowadzenie do bezpieczeństwa wartości nullTypy dopuszczające null i niedopuszczające nullOperatory ? i !Słowo kluczowe late a bezpieczeństwo wartości nullOperatory uwzględniające nullBezpieczeństwo wartości null w klasachPodsumowanie — system profili użytkowników7Klasy abstrakcyjne i interfejsy
Klasy abstrakcyjneMetody abstrakcyjneInterfejsy w DartInterfejsy niejawneImplementowanie a rozszerzanieWiele interfejsówPowtórka — kalkulator kształtów10Kolekcje i typy generyczne
Przegląd List, Set i MapKolekcje bezpieczne typowoKlasy generyczneMetody generyczneOgraniczenia typów generycznychIterable i IteratorPowtórka — generyczne przechowywanie danych13Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieMetody rozszerzająceKlasy wywoływalneKlasy zapieczętowane (Dart 3)Rekordy (Dart 3)Wzorce i dopasowywanie (3.0)Typy wyliczeniowe z metodami16Projekt: Zarządzanie biblioteką
Omówienie projektuKlasy książek i użytkowników2Konstruktory w Dart
Konstruktor domyślnyKonstruktory nazwaneListy inicjalizująceKonstruktory stałeKonstruktory fabryczneKonstruktory przekierowującePodsumowanie — budowanie kształtów5Hermetyzacja
Elementy publiczne a prywatneKonwencja prefiksu _Prywatność na poziomie bibliotekiGettery i settery — szczegółowoUkrywanie informacjiPodsumowanie — dane uczniów8Domieszki
Wprowadzenie do domieszekTworzenie domieszekKorzystanie z wielu domieszekSłowo kluczowe on w domieszkachDomieszka a dziedziczenieDomieszka a interfejsPodsumowanie – system zwierząt11Metody specjalne
Nadpisanie toString()Nadpisanie hashCode i ==Interfejs ComparableMetoda call()Nadpisanie noSuchMethodPodsumowanie — własna kolekcja14Wzorce projektowe, część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec Strategy3Właściwości klas
Elementy instancji a elementy statycznePola final i constZmienne inicjalizowane z opóźnieniemMetody i pola statyczneGettery i setteryPowtórzenie – menedżer kont bankowych6Dziedziczenie
Podstawy dziedziczeniaSłowo kluczowe superPrzesłanianie metodAdnotacja @overrideSłowo kluczowe final dla klasKonstruktory i dziedziczeniePowtórzenie – hierarchia pracowników9Polimorfizm
Podstawy polimorfizmuPolimorfizm za pomocą interfejsówSprawdzanie typu w czasie działaniaOperatory is i asSłowo kluczowe covariantPodsumowanie — procesor płatnościPoćwicz samodzielnie: Kompilator Dart online