### Question:
SpringStatusChecker implements StatusChecker { @Override public Status check() { ApplicationContext context = ServiceBean.getSpringContext(); if (context == null) { return new Status(Status.Level.UNKNOWN); } Status.Level level = Status.Level.OK; if (context instanceof Lifecycle) { if (((Lifecycle) context).isRunning()) { level = Status.Level.OK; } else { level = Status.Level.ERROR; } } else { level = Status.Level.UNKNOWN; } StringBuilder buf = new StringBuilder(); try { Class<?> cls = context.getClass(); Method method = null; while (cls != null && method == null) { try { method = cls.getDeclaredMethod("getConfigLocations", new Class<?>[0]); } catch (NoSuchMethodException t) { cls = cls.getSuperclass(); } } if (method != null) { if (!method.isAccessible()) { method.setAccessible(true); } String[] configs = (String[]) method.invoke(context, new Object[0]); if (configs != null && configs.length > 0) { for (String config : configs) { if (buf.length() > 0) { buf.append(","); } buf.append(config); } } } } catch (Throwable t) { logger.warn(t.getMessage(), t); } return new Status(level, buf.toString()); }  @Override Status check();  }### Answer:
@Test public void testWithoutApplicationContext() { Status status = springStatusChecker.check(); assertThat(status.getLevel(), is(Status.Level.UNKNOWN)); }
@Test public void testWithLifeCycleRunning() { ApplicationLifeCycle applicationLifeCycle = mock(ApplicationLifeCycle.class); new ServiceBean<Object>().setApplicationContext(applicationLifeCycle); given(applicationLifeCycle.getConfigLocations()).willReturn(new String[]{"test1", "test2"}); given(applicationLifeCycle.isRunning()).willReturn(true); Status status = springStatusChecker.check(); assertThat(status.getLevel(), is(Status.Level.OK)); assertThat(status.getMessage(), is("test1,test2")); }
@Test public void testWithoutLifeCycleRunning() { ApplicationLifeCycle applicationLifeCycle = mock(ApplicationLifeCycle.class); new ServiceBean<Object>().setApplicationContext(applicationLifeCycle); given(applicationLifeCycle.isRunning()).willReturn(false); Status status = springStatusChecker.check(); assertThat(status.getLevel(), is(Status.Level.ERROR)); }