package org.test4j.tools.commons;
import org.junit.Test;
import org.test4j.junit.Test4J;
public class ClazzHelperTest_NewInstance extends Test4J {
@Test
public void testNewInstance_Abstract() {
try {
ClazzHelper.newInstance(AbstractClazz.class);
want.fail();
} catch (Exception e) {
String message = e.getMessage();
want.string(message).contains("unsupport");
}
}
@Test
public void testNewInstance_Interface() {
Object o = ClazzHelper.newInstance(IClazz.class);
want.string(o.getClass().getName()).contains("$Proxy");
}
@Test
public void testNewInstance_DefautClazz() {
DefautClazz o = ClazzHelper.newInstance(DefautClazz.class);
want.string(o.name).isEqualTo("default");
}
@Test
public void testNewInstance_ParamClazz() {
ParamClazz o = ClazzHelper.newInstance(ParamClazz.class);
want.string(o.name).isNull();
}
@Test
public void testNewInstance_PrivateClazz() {
PrivateClazz o = ClazzHelper.newInstance(PrivateClazz.class);
want.string(o.name).isEqualTo("private");
}
@Test
public void testNewInstance_SubPrivateClazz() {
SubPrivateClazz o = ClazzHelper.newInstance(SubPrivateClazz.class);
want.string(o.name).isEqualTo("private");
}
}
abstract class AbstractClazz {
}
interface IClazz {
}
class DefautClazz {
String name = null;
public DefautClazz() {
this.name = "default";
}
}
class ParamClazz {
String name = null;
public ParamClazz(String name) {
this.name = name;
}
}
class PrivateClazz {
String name = null;
protected PrivateClazz() {
this.name = "private";
}
}
class SubPrivateClazz extends PrivateClazz {
}