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-
>> >
>> >

Reply via email to