Hi again Bill, I can prepare you a workaround - I am now packing to leave for Switzerland, I am posting an update tonight.
Best, -Simo http://people.apache.org/~simonetripodi/ http://twitter.com/simonetripodi On Mon, Jun 17, 2013 at 12:57 AM, William Speirs <[email protected]> wrote: > 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- >> > >> >
