#502 Adjusted tests for logger introduction
This commit is contained in:
		| @@ -22,18 +22,31 @@ | ||||
|  */ | ||||
| package com.iluwatar.dependency.injection; | ||||
|  | ||||
| import com.iluwatar.dependency.injection.utils.InMemoryAppender; | ||||
| import org.junit.After; | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
|  | ||||
| import static org.mockito.Mockito.times; | ||||
| import static org.mockito.Mockito.verify; | ||||
| import static org.mockito.Mockito.verifyNoMoreInteractions; | ||||
| import static org.junit.Assert.assertEquals; | ||||
|  | ||||
| /** | ||||
|  * Date: 12/10/15 - 8:40 PM | ||||
|  * | ||||
|  * @author Jeroen Meulemeester | ||||
|  */ | ||||
| public class AdvancedWizardTest extends StdOutTest { | ||||
| public class AdvancedWizardTest { | ||||
|  | ||||
|   private InMemoryAppender appender; | ||||
|  | ||||
|   @Before | ||||
|   public void setUp() { | ||||
|     appender = new InMemoryAppender(Tobacco.class); | ||||
|   } | ||||
|  | ||||
|   @After | ||||
|   public void tearDown() { | ||||
|     appender.stop(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Test if the {@link AdvancedWizard} smokes whatever instance of {@link Tobacco} is passed to him | ||||
| @@ -51,12 +64,13 @@ public class AdvancedWizardTest extends StdOutTest { | ||||
|       advancedWizard.smoke(); | ||||
|  | ||||
|       // Verify if the wizard is smoking the correct tobacco ... | ||||
|       verify(getStdOutMock(), times(1)).println("AdvancedWizard smoking " + tobacco.getClass().getSimpleName()); | ||||
|       assertEquals("AdvancedWizard smoking " + tobacco.getClass().getSimpleName(), appender.getLastMessage()); | ||||
|  | ||||
|       // ... and nothing else is happening. | ||||
|       verifyNoMoreInteractions(getStdOutMock()); | ||||
|     } | ||||
|  | ||||
|     // ... and nothing else is happening. | ||||
|     assertEquals(tobaccos.length, appender.getLogSize()); | ||||
|  | ||||
|   } | ||||
|  | ||||
| } | ||||
| } | ||||
|   | ||||
| @@ -25,19 +25,31 @@ package com.iluwatar.dependency.injection; | ||||
| import com.google.inject.AbstractModule; | ||||
| import com.google.inject.Guice; | ||||
| import com.google.inject.Injector; | ||||
|  | ||||
| import com.iluwatar.dependency.injection.utils.InMemoryAppender; | ||||
| import org.junit.After; | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
|  | ||||
| import static org.mockito.Mockito.times; | ||||
| import static org.mockito.Mockito.verify; | ||||
| import static org.mockito.Mockito.verifyNoMoreInteractions; | ||||
| import static org.junit.Assert.assertEquals; | ||||
|  | ||||
| /** | ||||
|  * Date: 12/10/15 - 8:57 PM | ||||
|  * | ||||
|  * @author Jeroen Meulemeester | ||||
|  */ | ||||
| public class GuiceWizardTest extends StdOutTest { | ||||
| public class GuiceWizardTest { | ||||
|  | ||||
|   private InMemoryAppender appender; | ||||
|  | ||||
|   @Before | ||||
|   public void setUp() { | ||||
|     appender = new InMemoryAppender(Tobacco.class); | ||||
|   } | ||||
|  | ||||
|   @After | ||||
|   public void tearDown() { | ||||
|     appender.stop(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Test if the {@link GuiceWizard} smokes whatever instance of {@link Tobacco} is passed to him | ||||
| @@ -55,12 +67,11 @@ public class GuiceWizardTest extends StdOutTest { | ||||
|       guiceWizard.smoke(); | ||||
|  | ||||
|       // Verify if the wizard is smoking the correct tobacco ... | ||||
|       verify(getStdOutMock(), times(1)).println("GuiceWizard smoking " + tobacco.getClass().getSimpleName()); | ||||
|  | ||||
|       // ... and nothing else is happening. | ||||
|       verifyNoMoreInteractions(getStdOutMock()); | ||||
|       assertEquals("GuiceWizard smoking " + tobacco.getClass().getSimpleName(), appender.getLastMessage()); | ||||
|     } | ||||
|  | ||||
|     // ... and nothing else is happening. | ||||
|     assertEquals(tobaccos.length, appender.getLogSize()); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @@ -89,12 +100,11 @@ public class GuiceWizardTest extends StdOutTest { | ||||
|       guiceWizard.smoke(); | ||||
|  | ||||
|       // Verify if the wizard is smoking the correct tobacco ... | ||||
|       verify(getStdOutMock(), times(1)).println("GuiceWizard smoking " + tobaccoClass.getSimpleName()); | ||||
|  | ||||
|       // ... and nothing else is happening. | ||||
|       verifyNoMoreInteractions(getStdOutMock()); | ||||
|       assertEquals("GuiceWizard smoking " + tobaccoClass.getSimpleName(), appender.getLastMessage()); | ||||
|     } | ||||
|  | ||||
|     // ... and nothing else is happening. | ||||
|     assertEquals(tobaccos.length, appender.getLogSize()); | ||||
|   } | ||||
|  | ||||
| } | ||||
| } | ||||
|   | ||||
| @@ -22,16 +22,31 @@ | ||||
|  */ | ||||
| package com.iluwatar.dependency.injection; | ||||
|  | ||||
| import com.iluwatar.dependency.injection.utils.InMemoryAppender; | ||||
| import org.junit.After; | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
|  | ||||
| import static org.mockito.Mockito.*; | ||||
| import static org.junit.Assert.assertEquals; | ||||
|  | ||||
| /** | ||||
|  * Date: 12/10/15 - 8:26 PM | ||||
|  * | ||||
|  * @author Jeroen Meulemeester | ||||
|  */ | ||||
| public class SimpleWizardTest extends StdOutTest { | ||||
| public class SimpleWizardTest { | ||||
|  | ||||
|   private InMemoryAppender appender; | ||||
|  | ||||
|   @Before | ||||
|   public void setUp() { | ||||
|     appender = new InMemoryAppender(Tobacco.class); | ||||
|   } | ||||
|  | ||||
|   @After | ||||
|   public void tearDown() { | ||||
|     appender.stop(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Test if the {@link SimpleWizard} does the only thing it can do: Smoke it's {@link | ||||
| @@ -41,8 +56,8 @@ public class SimpleWizardTest extends StdOutTest { | ||||
|   public void testSmoke() { | ||||
|     final SimpleWizard simpleWizard = new SimpleWizard(); | ||||
|     simpleWizard.smoke(); | ||||
|     verify(getStdOutMock(), times(1)).println("SimpleWizard smoking OldTobyTobacco"); | ||||
|     verifyNoMoreInteractions(getStdOutMock()); | ||||
|     assertEquals("SimpleWizard smoking OldTobyTobacco", appender.getLastMessage()); | ||||
|     assertEquals(1, appender.getLogSize()); | ||||
|   } | ||||
|  | ||||
| } | ||||
| } | ||||
|   | ||||
| @@ -1,75 +0,0 @@ | ||||
| /** | ||||
|  * The MIT License | ||||
|  * Copyright (c) 2014 Ilkka Seppälä | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|  * of this software and associated documentation files (the "Software"), to deal | ||||
|  * in the Software without restriction, including without limitation the rights | ||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|  * copies of the Software, and to permit persons to whom the Software is | ||||
|  * furnished to do so, subject to the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be included in | ||||
|  * all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|  * THE SOFTWARE. | ||||
|  */ | ||||
| package com.iluwatar.dependency.injection; | ||||
|  | ||||
| import org.junit.After; | ||||
| import org.junit.Before; | ||||
|  | ||||
| import java.io.PrintStream; | ||||
|  | ||||
| import static org.mockito.Mockito.mock; | ||||
|  | ||||
| /** | ||||
|  * Date: 12/10/15 - 8:37 PM | ||||
|  * | ||||
|  * @author Jeroen Meulemeester | ||||
|  */ | ||||
| public abstract class StdOutTest { | ||||
|  | ||||
|   /** | ||||
|    * The mocked standard out {@link PrintStream}, required since the actions of the wizard don't | ||||
|    * have any influence on any other accessible objects, except for writing to std-out using {@link | ||||
|    * System#out} | ||||
|    */ | ||||
|   private final PrintStream stdOutMock = mock(PrintStream.class); | ||||
|  | ||||
|   /** | ||||
|    * Keep the original std-out so it can be restored after the test | ||||
|    */ | ||||
|   private final PrintStream stdOutOrig = System.out; | ||||
|  | ||||
|   /** | ||||
|    * Inject the mocked std-out {@link PrintStream} into the {@link System} class before each test | ||||
|    */ | ||||
|   @Before | ||||
|   public void setUp() { | ||||
|     System.setOut(this.stdOutMock); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Removed the mocked std-out {@link PrintStream} again from the {@link System} class | ||||
|    */ | ||||
|   @After | ||||
|   public void tearDown() { | ||||
|     System.setOut(this.stdOutOrig); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Get the mocked stdOut {@link PrintStream} | ||||
|    * | ||||
|    * @return The stdOut print stream mock, renewed before each test | ||||
|    */ | ||||
|   final PrintStream getStdOutMock() { | ||||
|     return this.stdOutMock; | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,54 @@ | ||||
| /** | ||||
|  * The MIT License | ||||
|  * Copyright (c) 2014 Ilkka Seppälä | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|  * of this software and associated documentation files (the "Software"), to deal | ||||
|  * in the Software without restriction, including without limitation the rights | ||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|  * copies of the Software, and to permit persons to whom the Software is | ||||
|  * furnished to do so, subject to the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be included in | ||||
|  * all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|  * THE SOFTWARE. | ||||
|  */ | ||||
| package com.iluwatar.dependency.injection.utils; | ||||
|  | ||||
| import ch.qos.logback.classic.Logger; | ||||
| import ch.qos.logback.classic.spi.ILoggingEvent; | ||||
| import ch.qos.logback.core.AppenderBase; | ||||
| import org.slf4j.LoggerFactory; | ||||
|  | ||||
| import java.util.LinkedList; | ||||
| import java.util.List; | ||||
|  | ||||
| public class InMemoryAppender extends AppenderBase<ILoggingEvent> { | ||||
|  | ||||
|   private List<ILoggingEvent> log = new LinkedList<>(); | ||||
|  | ||||
|   public InMemoryAppender(Class clazz) { | ||||
|     ((Logger) LoggerFactory.getLogger(clazz)).addAppender(this); | ||||
|     start(); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   protected void append(ILoggingEvent eventObject) { | ||||
|     log.add(eventObject); | ||||
|   } | ||||
|  | ||||
|   public String getLastMessage() { | ||||
|     return log.get(log.size() - 1).getFormattedMessage(); | ||||
|   } | ||||
|  | ||||
|   public int getLogSize() { | ||||
|     return log.size(); | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user