读书人

关于junit测试内部类有关问题

发布时间: 2012-03-20 14:01:11 作者: rapoo

关于junit测试内部类问题
有如下类:
public class InnerClass {
public void print() {
System.out.println( "Hello World ");
}

private class Inner {
private Inner() {
}

public void printe() {
System.out.println( "--------- ");
}
}
}
请问如何测试InnerClass$Inner?
我的初步想法如下,可是没有成功:
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

import junit.framework.TestCase;

public class InnerClassTest extends TestCase {

public void testPrint() {
new InnerClass().print();
}
public void testInnerClass() {
InnerClass iner = new InnerClass();
Class inerClass = iner.getClass();
Class[] in = inerClass.getDeclaredClasses();
for (Class c : in) {
System.out.println(c.getName());
}
Class clIner = in[0];
try {
Constructor constructor = clIner.getDeclaredConstructor();//这里会出错的,
constructor.setAccessible(true);
Method method = clIner.getMethod( "printe ", new Class[] {});
method.setAccessible(true);
constructor.newInstance(new Object[] {});
method.invoke(constructor.newInstance(new Object[] {}),
new Object[] {});
} catch (Exception e) {
e.printStackTrace();
}
}


}

[解决办法]
要测试内部类的话,单元测试类也要变成内部类。
public class IncludeInnerClass {

private class Inner {
public void sayHello() {
System.out.println( "Hello! ");
}
}

public class InnerTester extends TestCase {

public void testSayHello() throws Exception {
Inner i = new Inner();
i.sayHello();
}
}
}

读书人网 >J2SE开发

热点推荐