Test e integrazione
Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 106 di 110.
Sfida
FacileNella lezione precedente, hai creato un’interfaccia amministratore per gestire l’inventario della biblioteca. Ora è il momento di mettere insieme tutti gli elementi creando una suite di test completa che verifichi che tutti i componenti del tuo sistema di gestione della biblioteca funzionino correttamente insieme.
Aggiungerai una classe LibraryTester che esegue test di integrazione su tutte le funzionalità della tua biblioteca, verificando che libri, utenti, amministratori, prestiti, ricerche e gestione dell’inventario funzionino come previsto quando vengono usati insieme.
book.dart,user.dart,admin.dart,library.dart: lascia invariate le classi esistenti.library_tester.dart: crea una nuova classeLibraryTesterche verifica il sistema della biblioteca. Deve avere un’istanza diLibrarye includere questi metodi di test:setupTestData()- registra un amministratore (A001,Test Admin), aggiunge due libri tramite l’amministratore (978-0-01,Book One,Author Ae978-0-02,Book Two,Author B) e registra un utente (U001,Test User)testBorrowing()- prende in prestito il primo libro per l’utente, prova a prenderlo di nuovo in prestito (l’operazione dovrebbe fallire), poi lo restituisce. StampaBorrowing test: PASSal termine.testSearch()- cerca i libri che hannoBooknel titolo, stampaSearch found: X booksdove X è il numero di risultati, poi stampaSearch test: PASStestAdminOperations()- rimuove il secondo libro usando l’amministratore, stampa il numero di libri comeBooks after removal: X, poi stampaAdmin test: PASSrunAllTests()- chiamasetupTestData(), poi esegue tutti e tre i metodi di test nell’ordine e infine stampaAll tests completed!
main.dart: crea un’istanza diLibraryTestere chiamarunAllTests()per eseguire l’intera suite di test.
Risultato previsto:
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!Provalo tu
import 'library_tester.dart';
void main() {
// TODO: Crea un'istanza di LibraryTester e chiama runAllTests()
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniLibrerie e importazioniIntroduzione alla programmazione orientata agli oggettiClassi e oggettiLa parola chiave thisMetodiVariabili di istanzaFondamenti dei costruttoriRiepilogo - Calcolatrice semplice4Sicurezza dei valori null
Introduzione alla sicurezza dei valori nullNullable e non nullableGli operatori ? e !La keyword late e la sicurezza dei valori nullOperatori null-awareSicurezza dei valori null nelle classiRiepilogo - Sistema di profili utente7Classi astratte e interfacce
Classi astratteMetodi astrattiInterfacce in DartInterfacce impliciteImplementare vs estendereInterfacce multipleRiepilogo - Calcolatore di forme10Collezioni e generici
Panoramica di List, Set e MapCollezioni sicure rispetto ai tipiClassi genericheMetodi genericiVincoli sui genericiIterable e IteratorRiepilogo - Archiviazione generica13Concetti avanzati di OOP
Composizione vs ereditarietàMetodi di estensioneClassi chiamabiliClassi sealed (Dart 3)Record (Dart 3)Pattern e matching (3.0)Enum con metodi16Progetto: Gestione della biblioteca
Panoramica del progettoClassi Libro e Utente2I costruttori in Dart
Costruttore predefinitoCostruttori con nomeListe di inizializzazioneCostruttori costantiCostruttori factoryCostruttori di reindirizzamentoRiepilogo - Crea forme5Incapsulamento
Membri pubblici e privatiConvenzione del prefisso _Visibilità a livello di libreriaApprofondimento su getter e setterNascondimento delle informazioniRiepilogo - Registri degli studenti8Mixin
Introduzione ai MixinCreare MixinUsare più MixinParola chiave on nei MixinMixin vs ereditarietàMixin vs interfacciaRiepilogo - Sistema animale11Metodi speciali
Sovrascrittura di toString()Sovrascrittura di hashCode e ==Interfaccia ComparableMetodo call()Sovrascrittura di noSuchMethodRiepilogo - Collezione personalizzata14Modelli di progettazione Parte 1
Introduzione ai modelli di progettazioneSingletonFactoryObserverStrategy3Proprietà delle classi
Membri di istanza e staticiCampi final e constVariabili lateMetodi e campi staticiGetter e setterRiepilogo - Gestore di conti bancari6Ereditarietà
Ereditarietà di baseLa parola chiave superOverride dei metodiL’annotazione @overrideLa parola chiave final per le classiCostruttori ed ereditarietàRiepilogo - Gerarchia dei dipendenti9Polimorfismo
Fondamenti di polimorfismoPolimorfismo tramite interfacceControllo del tipo a runtimeGli operatori is e asParola chiave covariantRiepilogo - Elaboratore di pagamenti12OOP asincrona
Future e async/awaitNozioni di base sugli streamController degli streamCostruttori asincroniAsync nei metodi di classeRiepilogo - Recupero dei dati15Pattern di progettazione Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern RepositoryEsercitati da solo: Compilatore Dart online