@Test
 public void getService_MUST_return_the_same_instance_WHEN_in_dev_mode() throws Exception {
   doReturn(Mode.DEV).when(configurationSource()).runMode();
   try (TemporaryPlayApplication ignored = new TemporaryPlayApplication()) {
     assertSame(serviceLoader.getService(), serviceLoader.getService());
   }
 }
 @Test
 public void
     getService_MUST_return_the_fallback_service_instance_WHEN_the_service_is_not_configured()
         throws Exception {
   configureService(null);
   assertEquals(FALLBACK_SERVICE_INSTANCE, serviceLoader.getService());
 }
 @Test
 public void
     getService_MUST_not_use_the_default_instance_creator_AFTER_temporary_services_were_closed()
         throws Exception {
   withDefaultService(DEFAULT_SERVICE_A_INSTANCE, () -> {});
   assertThat(serviceLoader.getService(), instanceOf(CUSTOM_SERVICE_CLASS));
 }
 @Test
 public void getService_MUST_return_the_configured_service_WHEN_default_service_is_specified()
     throws Exception {
   withDefaultService(
       DEFAULT_SERVICE_A_INSTANCE,
       () ->
           assertThat(serviceLoader.getService(), is(instanceOf(DerivedTestPlessServiceA.class))));
 }
 @Test
 public void getService_MUST_return_the_default_service_WHEN_no_service_is_configured()
     throws Exception {
   configureService(null);
   withDefaultService(
       DEFAULT_SERVICE_A_INSTANCE,
       () -> assertSame(serviceLoader.getService(), DEFAULT_SERVICE_A_INSTANCE));
 }
 @Test
 public void getService_MUST_return_the_fallback_service_WHEN_default_service_is_removed()
     throws Exception {
   configureService(null);
   withDefaultService(
       DEFAULT_SERVICE_A_INSTANCE,
       () -> {
         withDefaultService(
             TestPlessServiceA.class,
             null,
             () -> {
               assertSame(serviceLoader.getService(), FALLBACK_SERVICE_INSTANCE);
             });
       });
 }
 @Test
 public void getService_MUST_return_a_new_instance_WHEN_in_test_mode() throws Exception {
   assertNotSame(serviceLoader.getService(), serviceLoader.getService());
 }
 @Test
 public void getService_MUST_return_the_same_instance_WHEN_in_production_mode() throws Exception {
   doReturn(Mode.PROD).when(configurationSource()).runMode();
   assertSame(serviceLoader.getService(), serviceLoader.getService());
 }
 @Test
 public void getService_MUST_return_the_configured_instance() throws Exception {
   assertThat(serviceLoader.getService(), is(instanceOf(DerivedTestPlessServiceA.class)));
 }
 @Test(expected = RuntimeException.class)
 public void getService_MUST_throw_an_exception_WHEN_the_service_class_does_not_exist()
     throws Exception {
   configureService("not a valid class name");
   serviceLoader.getService();
 }