Because I have value parameters that I pass in as well (port number) that I'd like to print to info.
Bill- On Jun 16, 2013 4:35 PM, "Simone Tripodi" <[email protected]> wrote: > Hi Bill, > > my silly question is: why do you need invoking the logger in the > constructor? :) > > TIA, > -Simo > > http://people.apache.org/~simonetripodi/ > http://twitter.com/simonetripodi > > > On Sun, Jun 16, 2013 at 6:06 PM, William Speirs <[email protected]> > wrote: > > OK... I'll wait for that new module and maybe give Onami another shot. > > > > For what it's worth, it seems like a lot more code in my unit tests when > > trying to use Onami. IMO, you never want to use the injector when > running a > > unit test. It's best to inject via constructor, then simply call new in > your > > unit test and provide mocked instances via the constructor. Using > > @LoggerInject violates this because it's a field injection, and > therefore is > > causing the issue. > > > > So it's a question of "is it worth saving typing to setup the logger in > each > > class" vs "the headache of setting up the injector in each unit tests"? > > Right now, I'm not sure... > > > > Thanks... > > > > Bill- > > > > > > On Sun, Jun 16, 2013 at 11:47 AM, Simone Tripodi < > [email protected]> > > wrote: > >> > >> Hi Bill, > >> > >> I am sorry you stumbled in a Guice/Onami-Logger limitation: > >> Onami-Logger indeed injects the logger instance AFTER the injectee is > >> created by the Guice framework, via a MembersInjector<I> > >> implementation, that is why you cannot use the logged inside the > >> constructor - it has not been injected yet :( > >> > >> HTH, all the best, > >> -Simo > >> > >> http://people.apache.org/~simonetripodi/ > >> http://twitter.com/simonetripodi > >> > >> > >> On Sat, Jun 15, 2013 at 10:55 PM, William Speirs <[email protected]> > >> wrote: > >> > I'm trying to use Slf4jLoggingModule in a unit test with an > >> > AssistedInject. Here is my basic setup: > >> > > >> > > >> > public class BaseClass { > >> > private @InjectLogger Logger LOG; > >> > > >> > public BaseClass() { > >> > LOG.debug("Calling constructor"); // dies with NPE > >> > } > >> > > >> > public class ClassA extends BaseClass { > >> > private @InjectLogger Logger LOG; > >> > > >> > @Inject > >> > public ClassA(@Assisted Bean bean) { > >> > super(); > >> > } > >> > > >> > public interface ClassAFactory { > >> > public ClassA create(Bean bean); > >> > } > >> > } > >> > > >> > @RunWith( OnamiRunner.class ) > >> > @MockFramework( MockType.MOCKITO ) > >> > public class ClassATest extends AbstractModule { > >> > > >> > @Inject ClassAFactory factory; > >> > > >> > @GuiceProvidedModules > >> > public static Module createComplexModule() { > >> > return new Slf4jLoggingModule(); > >> > } > >> > > >> > @Override > >> > public void configure() { > >> > install(new FactoryModuleBuilder() > >> > .implement(ClassA.class, ClassA.class) > >> > .build(ClassAFactory.class)); > >> > } > >> > > >> > @Test > >> > public void test() throws Exception { > >> > ClassA a = factory.create(bean); > >> > } > >> > } > >> > > >> > > >> > What am I doing wrong? This is my first time using Onami and so I'm > >> > sure I'm missing something obvious/stupid. > >> > > >> > Thanks... > >> > > >> > Bill- > > > > >
