package rmblworx.tools.timey; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.slf4j.Logger; /* * Copyright 2014-2015 Christian Raue * MIT License http://opensource.org/licenses/mit-license.php */ /** * Test fürs Auslesen der Anwendungsattribute. * * @author Christian Raue {@literal <christian.raue@gmail.com>} */ public class ApplicationPropertiesTest { /** * Gemockter Logger, um das Log nicht unnötig zuzumüllen. */ @Mock private Logger logger; @Mock private InputStream inputStream; @Mock private Properties props; @Before public final void setUp() throws IOException { MockitoAnnotations.initMocks(this); setupMockedInputStream(); setupMockedProperties(); } /** * Setup-Methode für das zu mockende Properties-Objekt. * * @throws IOException * wenn IOException auftritt. */ private void setupMockedInputStream() throws IOException { doThrow(new IOException()).when(inputStream).close(); } /** * Setup-Methode für das zu mockende Properties-Objekt. */ @SuppressWarnings("unchecked") private void setupMockedProperties() { when(props.getProperty(ApplicationProperties.PROP_APP_VERSION)).thenThrow(IOException.class); } /** * Testet das Auslesen der Versionskennung. */ @Test public final void testGetVersion() { final String version = new ApplicationProperties().getVersion(); assertNotNull(version); assertNotEquals("", version); assertNotEquals("${project.version}", version); } /** * Löst gezielt eine IOException aus, um das korrekte Verhalten der Methode zu testen. Erwartet wird lediglich eine Fehlermeldung im * Log und die Rückgabe von <code>null</code>. */ @Test public final void testGetVersionShouldReturnNullIfIOExceptionOccurs() { final String version = new ApplicationProperties(props, inputStream, logger).getVersion(); verify(logger).error(anyString()); assertNull("Es wurde eine Referenz geliefert!", version); } }