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.
