On test scenario with different config need for differest, i simply do ConfigFactory.invalidateCaches() in setup().
On Wed, Aug 17, 2016 at 9:43 AM, Edward Zhang <[email protected]> wrote: > Sorry I mean "remove" :-) > > Thanks > Edward > > On Tue, Aug 16, 2016 at 6:35 PM, Chang Chen <[email protected]> wrote: > > > Hi Edward > > > > Does remote mean run TestEagleConfig in different JVM? > > > > Thanks > > Chang > > > > On Wednesday, August 17, 2016, Edward Zhang <[email protected]> > > 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 <[email protected] > > > <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 > > > > > > > > > >
