Hi everyone,

I am considering using separate test modules for testing but I'm a bit
bothered by the fact that Guice won't let me bind the same class to
multiple targets. For example, assume I currently have a main module that
binds two classes:

MainModule:
bind(A.class).to(a);
bind(B.class).to(b);

I want to test the A class, so I create an "aMock" version in TestModule:

TestModule:
bind(A.class).to(aMock);

Then I try to run my tests with both MainModule and TestModule, and of
course, Guice complains that A.class is bound twice. So now I find myself
having to introduce a third module that contains the common bindings:

CommonModule:
bind(B.class).to(b);

And I run:

Production:
CommonModule, MainModule

Tests:
CommonModule, TestModule

I understand that this architecture is not necessarily bad but it's a bit
tedious that whenever I want to test a certain class, I need to 1) remove
it from CommonModule 2) move it to MainModule and 3) create a mock in
TestModule.

Ideally, I'd like to tell Guice to allow shadowing bindings so I can just
place TestModule at the top of the list of modules and Guice will ignore
duplicate bindings that it will find in MainModule. This way, I never need
to create CommonModule. With this feature, I now have:

Production:
MainModule

Test:
TestModule, MainModule

Benefits: one less module to create and less bookkeeping moving bindings in
and out of modules.

Thoughts?

-- 
Cédric

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en.

Reply via email to