junit.textui.TestRunner
conforme al Observer pattern, ma è la dell'osservatore, non il soggetto . Almeno, è essere l'osservatore, non lo è più.
JUnit espone l'interfaccia TestListener: La classe TestResult gestisce un TestCase, chiamando i propri metodi e startTest
endTest
. TestResult contiene anche un elenco di istanze di TestListener e ne notifica tutte le volte che viene avviato o terminato un test. Questo è il pattern Observer per eccellenza: TestResult è l'oggetto, che notifica la sua raccolta di istanze TestListener, una delle quali potrebbe essere TestRunner che si aggiunge all'elenco.
Detto, TestRunner doesn't currently add itself as a listener to TestResult, ed ha implementazioni vuote delle sue richieste testStarted
, testEnded
e testFailed
metodi. Invece, aggiunge un ResultPrinter alla lista di ascoltatori; Presumo che questo sia stato preso in considerazione da TestRunner ad un certo punto.
Quindi, TestRunner è impostato per essere un Observer, ma non funziona più come uno. Tutto sommato, questo dimostra in realtà una forza di modelli di progettazione: consente di ridefinire il codice e separare il comportamento codificando con quelle specifiche interfacce.
fonte
2014-04-12 06:21:01
Ciao e benvenuto in SO. Questo sito aiuta le persone a risolvere i loro specifici problemi di programmazione. Dai un'occhiata al Centro assistenza http://stackoverflow.com/help per vedere quali domande e come dovresti chiedere qui. –
@Ean Sembra un "problema pratico e risolvibile" che è "unico per lo sviluppo del software". Esiste anche un po 'di sottigliezza: TestRunner implementa TestListener ma sembra non utilizzarlo. –