package net.csdn.junit;
import com.google.inject.Injector;
import net.csdn.ServiceFramwork;
import net.csdn.jpa.JPA;
import org.junit.After;
import org.junit.Before;
import java.lang.reflect.Field;
/**
* BlogInfo: WilliamZhu
* Date: 12-6-17
* Time: 下午10:21
*/
public class IocTest {
protected final static Injector injector = ServiceFramwork.injector;
public void dbCommit() {
JPA.getJPAConfig().getJPAContext().closeTx(false);
}
/*
因为很多Service是private的。有时候我们需要替换掉一些Service对象。比如HttpTransportService.
这样可以避免去访问真实的服务。否则,你可以继承BaseServiceWithJettyTest
*/
protected void setService(Object targetObj, String fieldName, Object fieldValue) {
try {
Field field = targetObj.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
field.set(targetObj, fieldValue);
} catch (Exception e) {
e.printStackTrace();
}
}
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
dbCommit();
}
protected void setService(Object targetObj, Class<?> fieldClass, Object fieldValue) {
try {
Field[] fields = targetObj.getClass().getDeclaredFields();
for (Field field : fields) {
Class temp = field.getType();
if (temp == fieldClass || fieldClass.isAssignableFrom(temp)) {
field.setAccessible(true);
field.set(targetObj, fieldValue);
return;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}