com.google.inject.testing.fieldbinder

Class BoundFieldModule

  • All Implemented Interfaces:
    Module


    public final class BoundFieldModule
    extends Object
    implements Module
    Automatically creates Guice bindings for fields in an object annotated with Bind.

    This module is intended for use in tests to reduce the code needed to bind local fields (usually mocks) for injection.

    The following rules are followed in determining how fields are bound using this module:

    Example use:

    
     public class TestFoo {
       // bind(new TypeLiteral<List<Object>>() {}).toInstance(listOfObjects);
       @Bind private List<Object> listOfObjects = Lists.of();
    
       // private String userName = "string_that_changes_over_time";
       // bind(String.class).toProvider(new Provider() { public String get() { return userName; }});
       @Bind(lazy = true) private String userName;
    
       // bind(SuperClass.class).toInstance(aSubClass);
       @Bind(to = SuperClass.class) private SubClass aSubClass = new SubClass();
    
       // bind(String.class).annotatedWith(MyBindingAnnotation.class).toInstance(myString);
       @Bind
       @MyBindingAnnotation
       private String myString = "hello";
    
       // bind(Object.class).toProvider(myProvider);
       @Bind private Provider<Object> myProvider = getProvider();
    
       @Before public void setUp() {
         Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this);
       }
     }
     

    Author:
    eatnumber1@google.com (Russ Harmon)
    See Also:
    Bind
    • Method Detail

      • of

        public static BoundFieldModule of(Object instance)
        Create a BoundFieldModule which binds the Bind annotated fields of instance.
        Parameters:
        instance - the instance whose fields will be bound.
        Returns:
        a module which will bind the Bind annotated fields of instance.

Copyright © 2006–2018 Google, Inc.. All rights reserved.