package org.dayatang.ioc.test;
import org.dayatang.domain.InstanceProvider;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* 公共的InstanceProvider测试
* @author Administrator
*
*/
public abstract class AbstractInstanceProviderTest {
private InstanceProvider provider;
abstract protected InstanceProvider createInstanceProvider();
@Before
public void setUp() {
provider = createInstanceProvider();
}
@Test
public void testGetInstance() {
Service1 service = provider.getInstance(Service1.class);
assertNotNull(service);
assertEquals("MyService1", service.name());
}
@Test
public void testGetInstanceWithName() {
assertEquals("MyService21", provider.getInstance(Service2.class, "service21").name());
assertEquals("MyService22", provider.getInstance(Service2.class, "service22").name());
}
@Test
public void testGetInstanceWithAnnotation() {
Service2 service = provider.getInstance(Service2.class, TheAnnotation.class);
assertEquals("MyService23", service.name());
}
@Test
public void testNotFound() {
assertNull(provider.getInstance(Long.class));
}
public InstanceProvider getProvider() {
return provider;
}
}