首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-03-20 
关于junit测试内部类问题有如下类:publicclassInnerClass{publicvoidprint(){System.out.println( HelloW

关于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();
}
}
}

热点排行