• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.google.inject;
2 
3 import static com.google.inject.Asserts.assertContains;
4 
5 import com.google.inject.name.Names;
6 import java.util.logging.Logger;
7 import junit.framework.TestCase;
8 
9 /**
10  * Test built-in injection of loggers.
11  *
12  * @author jessewilson
13  */
14 public class LoggerInjectionTest extends TestCase {
15 
16   @Inject Logger logger;
17 
testLoggerWithMember()18   public void testLoggerWithMember() {
19     Injector injector = Guice.createInjector();
20     injector.injectMembers(this);
21     assertEquals("com.google.inject.LoggerInjectionTest", logger.getName());
22   }
23 
testLoggerInConstructor()24   public void testLoggerInConstructor() {
25     Injector injector = Guice.createInjector();
26     Foo foo = injector.getInstance(Foo.class);
27     assertEquals("com.google.inject.LoggerInjectionTest$Foo", foo.logger.getName());
28   }
29 
30   private static class Foo {
31     Logger logger;
32 
33     @SuppressWarnings("unused")
34     @Inject
Foo(Logger logger)35     Foo(Logger logger) {
36       this.logger = logger;
37     }
38   }
39 
testLoggerWithoutMember()40   public void testLoggerWithoutMember() {
41     Injector injector = Guice.createInjector();
42     assertNull(injector.getInstance(Logger.class).getName());
43     assertNull(injector.getProvider(Logger.class).get().getName());
44     assertNull(injector.getBinding(Logger.class).getProvider().get().getName());
45     assertEquals("Provider<Logger>", injector.getProvider(Logger.class).toString());
46   }
47 
testCanBindAnnotatedLogger()48   public void testCanBindAnnotatedLogger() {
49     Injector injector =
50         Guice.createInjector(
51             new AbstractModule() {
52               @Override
53               protected void configure() {
54                 bind(Logger.class)
55                     .annotatedWith(Names.named("anonymous"))
56                     .toInstance(Logger.getAnonymousLogger());
57               }
58             });
59 
60     assertNull(injector.getInstance(Key.get(Logger.class, Names.named("anonymous"))).getName());
61   }
62 
testCannotBindLogger()63   public void testCannotBindLogger() {
64     try {
65       Guice.createInjector(
66           new AbstractModule() {
67             @Override
68             protected void configure() {
69               bind(Logger.class).toInstance(Logger.getAnonymousLogger());
70             }
71           });
72       fail();
73     } catch (CreationException expected) {
74       assertContains(
75           expected.getMessage(), "A binding to java.util.logging.Logger was already configured");
76     }
77   }
78 }
79