如何在jUnit中实例化一个对象,需要在其构造函数中反射创建另一个对象?

时间:2015-12-17 02:24:44

标签: java reflection junit instance invocationtargetexception

我正试图为我的一个班级编写junit考试。设计不是我做的;这是一个相当古老的应用程序,java7,struts1和clydeDB框架。

这些类的设置如下: ProcessObjIProcessObj(界面), ProcessHome

public class ProcessHome {

   private static ProcessHome instance = new ProcessHome();

   //default Constructor
   private ProcessHome() {
   }

   public static ProcessHome getInstance() {
      return instance;
   }

   public IProcessObj getProcessObj() throws POException {
      return ProcessObj.getInstance(); //this is below
   }
}

public class ProcessObj implements IProcessObj {
   // instance
   private static IProcessObj instance;
   ...
   //constuctor
   private ProcessObj() throws POException {
      init();
   }

   static IProcessObj getInstance() throws POException {
      if (instance == null) {
            instance = new ProcessObj();
      }
      return instance;
   }
   //jUnit test setUp

   @Before
   public void setUp() throws Exception {

      public static IProcessObj iPO;
      iPAO = ProcessHome.getInstance()
            .ProcessObj();

      Constructor<ProcessObj> pa = ProcessObj.class
            .getDeclaredConstructor();
      pa.setAccessible(true);
      iPO = pa.newInstance();`

     ...

它在这里工作正常,但是在ProcessObj中,初始化方法通过另一组类,这些类的设置与上面的过程对象完全相同,用于数据访问层。

有没有办法可以创建一个可用的过程对象实例?有人可以向我解释一下究竟发生了什么吗?我一直在InvocationTargetException

1 个答案:

答案 0 :(得分:0)

为什么你不做这样的事情:

{{1}}