Added tests for service-locator pattern
Fix NPE when requested service is unknown
This commit is contained in:
parent
fcfdbe71f5
commit
a375b2d28b
@ -32,7 +32,9 @@ public class ServiceLocator {
|
||||
*/
|
||||
InitContext ctx = new InitContext();
|
||||
serviceObj = (Service) ctx.lookup(serviceJndiName);
|
||||
serviceCache.addService(serviceObj);
|
||||
if (serviceObj != null) { // Only cache a service if it actually exists
|
||||
serviceCache.addService(serviceObj);
|
||||
}
|
||||
return serviceObj;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,42 @@
|
||||
package com.iluwatar.servicelocator;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Date: 12/29/15 - 19:07 PM
|
||||
*
|
||||
* @author Jeroen Meulemeester
|
||||
*/
|
||||
public class ServiceLocatorTest {
|
||||
|
||||
/**
|
||||
* Verify if we just receive 'null' when requesting a non-existing service
|
||||
*/
|
||||
@Test
|
||||
public void testGetNonExistentService() {
|
||||
assertNull(ServiceLocator.getService("fantastic/unicorn/service"));
|
||||
assertNull(ServiceLocator.getService("another/fantastic/unicorn/service"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify if we get the same cached instance when requesting the same service twice
|
||||
*/
|
||||
@Test
|
||||
public void testServiceCache() {
|
||||
final String[] serviceNames = new String[]{
|
||||
"jndi/serviceA", "jndi/serviceB"
|
||||
};
|
||||
|
||||
for (final String serviceName : serviceNames) {
|
||||
final Service service = ServiceLocator.getService(serviceName);
|
||||
assertNotNull(service);
|
||||
assertEquals(serviceName, service.getName());
|
||||
assertTrue(service.getId() > 0); // The id is generated randomly, but the minimum value is '1'
|
||||
assertSame(service, ServiceLocator.getService(serviceName));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user