This guide assumes you are familiar with unit-testing and JUnit, and know the concept of Mock Objects.
interface Subscriber {
void receive(String message);
}
class TestPublisher extends TestCase {
public void testPublishMessage() {
.....
publisher.publish("hi himock");
assertEquals("hi himock",receiveMessage);
}
}
public class TestPublisher extends TestCase{
String receiveMessage =null;
public void testOldMockTestPublishMessage(){
//expectations
class MockSubscriber implements Subscriber{
public void receive(String message) {
receiveMessage = message;
}
}
//set up
Publisher publisher = new Publisher();
MockSubscriber mockSubscriber = new MockSubscriber();
publisher.add(mockSubscriber);
// execute
publisher.publish("hi mock");
//verify
assertEquals("hi mock",receiveMessage);
}
}
public class TestPublisher extends TestCase{
public void testHiMockPublishMessage() {
//expectations
class SubscibeMocker{
void receive(String aMessage){
"hi mock".equals(aMessage);
}
}
//set up
Publisher publisher = new Publisher();
HiMock hiMock = new HiMock();
Subscriber mockSubscriber = (Subscriber)hiMock.mock(Subscriber.class,new SubscibeMocker());
publisher.add(mockSubscriber);
// execute
publisher.publish("hi mock");
// verify
hiMock.verify();
}
}
public class Publisher {
List subscribers;
public Publisher() {
subscribers = new ArrayList();
}
public void add(Subscriber subscriber) {
subscribers.add(subscriber);
}
public void publish(String message) {
for(int i=0;i<subscribers.size();i++)
((Subscriber)subscribers.get(i)).receive(message);
}
}