Я нашел решение, хотя у меня смешанные чувства по этому поводу.
Используя Util.register (2-й блок кода), я зарегистрировал реализацию службы конфигурации, которая создала фиктивные объекты. Это сработало и позволило мне протестировать метод start (), но это противоречит идее модульного теста.
public class ConfigServiceTest implements ConfigurationService{
@Override
public Configuration getConfiguration() {
Configuration conf = mock(Configuration.class);
ActiveMq amq = mock(ActiveMq.class);
when(amq.getQueueName()).thenReturn("test");
when(amq.getBrokerUrl()).thenReturn("http://127.0.0.1:61616?soTimeout=1000");
when(conf.getActiveMq()).thenReturn(amq);
return conf;
}
//other methods just allowed to return null
}
Тогда в тесте:
Util.register(new thingICantChange(){
@Override
protected void configure (){
super.configure();
bind(ConfigurationService.class).to(ConfigServiceTest.class).asEagerSingleton();
}
});
class1 service = new class1();
service.start();
Assert.assertEquals(true, true);
start является недействительным, а не новым потоком, поэтому Assert.assertEquals (true, true) - лучший из всех, кто знал меня, чтобы проверить, что запуск запускался. Время Mockito / PowerMock (1) потребовало бы макета class1, который, скорее всего, противоречит модульному тесту, чтобы увидеть, МОЖЕТ ли он работать.