@Test public void checkSystemProperty() { // don't mess up other tests w/ changing out logging.. synchronized (Log.class) { // save the original.. Class<?> orig = Log.getSpiClass(); try { // check the default.. Log.getLog(String.class); assertEquals(Log.getSpiClass(), StdOutLogger.class); // attempt to get the mock logger Log.setSpiClass(null); System.setProperty(Log.LOGSPI_PROP, MockLogSpi.class.getName()); Log.getLog(String.class); assertEquals(Log.getSpiClass(), MockLogSpi.class); // attempt to change it, so make sure its cached.. System.setProperty(Log.LOGSPI_PROP, StdOutLogger.class.getName()); assertEquals(Log.getSpiClass(), MockLogSpi.class); } finally { // restore logger to original state.. Log.setSpiClass(orig); System.clearProperty(Log.LOGSPI_PROP); } } }