Now, let's write a simple JUnit test that uses our classes and demonstrates how all of them play together. Also, in the following example, we are using the Mockito library (http://site.mockito.org) in order to verify expectations with the support of the Spies Pattern:
@Testpublic void observersHandleEventsFromSubject() { // given Subject<String> subject = new ConcreteSubject(); Observer<String> observerA = Mockito.spy(new ConcreteObserverA()); Observer<String> observerB = Mockito.spy(new ConcreteObserverB()); // when subject.notifyObservers("No listeners"); subject.registerObserver(observerA); subject.notifyObservers("Message for A"); subject.registerObserver(observerB); subject.notifyObservers("Message for ...