Hi Edward Does remote mean run TestEagleConfig in different JVM?
Thanks Chang On Wednesday, August 17, 2016, Edward Zhang <yonzhang2...@apache.org> wrote: > TestEagleConfig is not a valid test case because it assumes that it can > initialize EagleConfigFactory, but when we execute multiple test cases, > this may not work as EagleConfigFactory may already be initialized before > this test case is executed. So setting "config.resource" will not have any > effect. > > I suggest we remote TestEagleConfig, and also going forward we can need > refactor EagleConfigFactor to be not a singleton but use > com.typesafe.config.Config as constructor parameter. > > Thanks > Edward > > On Tue, Aug 16, 2016 at 4:26 AM, Chang Chen <baibaic...@gmail.com > <javascript:;>> wrote: > > > Hi Guys > > > > In the middle of writing UT for Eagle, we found it is difficult to mock > > EagleConfigFactory, since it has static method. The current workaround > is > > introducing powermock, so that we can set manager to mock object , i.e. > > > > Whitebox.setInternalState(EagleConfigFactory.class, "manager", > > eagleConfigFactory); > > > > This is OK in most cases, but TestEagleConfig.testInit could be failed, > > because manager only initialized at first time and EagleConfigFactory's > > Constructor is private: > > > > private static EagleConfigFactory manager = new EagleConfigFactory(); > > > > EagleConfigFactory actually has two roles, one is factory and another is > > configuration. I propose refactoring EagleConfigFactory and distinguish > > these two roles: > > > > public class EagleConfigImpl implements EagleConfig{ > > } > > > > public class EagleConfigFactory { > > public static EagleConfig load(){} > > public static void reset(EagleConfig config){ > > if (config == null) { > > //default > > }else{ > > } > > } > > } > > > > However doing so, we need call EagleConfigFactory.reset at the beginning > of > > eagle start. > > > > Any ideas? > > > > Thanks > > Chang > > >