我正在使用private
测试JUnit
方法,我正在使用Reflection
调用它。我得到的错误是java.lang.InstantiationException
。我知道它不是创建Class
的实例,但我不确定我做错了什么。 Object object = clazz.newInstance();
是引发Exception
的行。
待测方法
private int _getType(String type) {
if ("DATE".equalsIgnoreCase(type)) return Types.DATE;
if ("STRING".equalsIgnoreCase(type)) return Types.VARCHAR;
if ("INT".equalsIgnoreCase(type)) return Types.INTEGER;
if ("TIMESTAMP".equalsIgnoreCase(type)) return Types.TIMESTAMP;
return Types.NULL;
}
JUnit测试
@Test
public void testGetType() throws Exception {
String type1 = "DATE";
String type2 = "STRING";
String type3 = "INT";
String type4 = "TIMESTAMP";
Class clazz = SpringStoredProcImpl.class;
Object object = clazz.newInstance();
Method method = object.getClass().getDeclaredMethod("getType", String.class);
method.setAccessible(true);
method.invoke(object, type1);
我还没有断言,所以请忽略它。
提前致谢。
答案 0 :(得分:0)
您尝试创建一个* {
box-sizing: border-box;
}
html, body {
margin: 0;
height: 100%;
}
.container {
height: 100%;
}
.col-1{
float: left;
width: 33%;
overflow: auto;
}
.col-2{
float: left;
width: 67%;
position: relative;
}
.col-2 .content {
position: absolute;
left: 0; right: 0;
top: 20px; /* header height */
bottom: 20px; /* footer height */
overflow: auto;
}
.header, .footer {
height: 20px;
background-color: red;
position: absolute;
left: 0; right: 0;
}
.header {
top: 0;
}
.footer {
bottom: 0;
}
的实例,在您的情况下确实存在。
由于构造函数为no argument constructor
,您应首先使用public
关键字创建对象,然后从new
开始执行其余代码
仅供参考,如果你想通过反思创建你的对象,那就像Method method...
而不是clazz.getConstructor(DataSource.class, String.class, ArrayList.class).newInstance(dataSource, sprocName, params)
答案 1 :(得分:0)
不同的答案:不要这样做。
为什么您认为需要将此方法设为私有?看起来这个方法的责任是根据字符串输入“查找”枚举类型。我认为简单地使这个方法包受到保护并避免反射开销/麻烦会更有意义。