@Test public void testCatalinaFactories() throws Exception { ServiceLoaderTomcatFactory factory = new ServiceLoaderTomcatFactory(this.serverFactory, this.engineFactory, this.hostFactory, this.contextFactory, this.connectorFactory, this.provider); org.apache.catalina.Server catalinaServer = mock(org.apache.catalina.Server.class); Server server = mock(Server.class); when(this.serverFactory.createServer(same(factory), same(catalinaServer))).thenReturn(server); assertSame(server, factory.createServer(catalinaServer)); org.apache.catalina.Service service = mock(org.apache.catalina.Service.class); org.apache.catalina.Engine catalinaEngine = mock(org.apache.catalina.Engine.class); Engine engine = mock(Engine.class); when(catalinaEngine.getService()).thenReturn(service); when(service.getServer()).thenReturn(catalinaServer); when(this.engineFactory.createEngine(same(factory), same(catalinaEngine), same(server))).thenReturn(engine); assertSame(engine, factory.createEngine(catalinaEngine)); org.apache.catalina.Host catalinaHost = mock(org.apache.catalina.Host.class); Host host = mock(Host.class); when(catalinaHost.getParent()).thenReturn(catalinaEngine); when(this.hostFactory.createHost(same(factory), same(catalinaHost), same(engine))).thenReturn(host); assertSame(host, factory.createHost(catalinaHost)); org.apache.catalina.Context catalinaContext = mock(org.apache.catalina.Context.class); Context context = mock(Context.class); when(catalinaContext.getParent()).thenReturn(catalinaHost); when(this.contextFactory.createContext(same(catalinaContext), same(host))).thenReturn(context); assertSame(context, factory.createContext(catalinaContext)); }