@Override protected final void setUp() throws Exception { if (null == servletContext) { servletContext = rootServletContext; contextPath = ""; }else{ contextPath = servletContext.getContextPath(); } appContext = null == servletContext ? null : AppContext.get(servletContext); if(null != appContext) { appConfig = appContext.getConfig(); beanFactory = appContext.getBeanFactory(); } this.doSetUp(); }
@Override public void init(ServletConfig config) throws ServletException { String servletClassName = config.getInitParameter(INIT_PARAM_SERVLET_CLASS); if(Strings.isEmpty(servletClassName)) { throw new ServletException("The init param '" + INIT_PARAM_SERVLET_CLASS + "' must be configured"); } Class<? extends Servlet> servletClass = (Class<? extends Servlet>)Classes.forName(servletClassName); AppContext context = AppContext.get(config.getServletContext()); if(null == context) { throw new ServletException("AppContext must be initialized!"); } this.config = config; servlet = context.getBeanFactory().getOrCreateBean(servletClass); servlet.init(config); }
protected static void startServer() { synchronized (WebTestRunner.class) { if(null == server) { if(null == httpClient) { httpClient = new OkTHttpClient(httpPort); } if(null == httpsClient) { httpsClient = new OkTHttpClient(httpsPort, true); } if (null == server) { AppContextInitializer.markTesting(); server = new TWebServer(httpPort, httpsPort, true); if(duplicateRootContext) { server.duplicateContext("", ROOT_CONTEXT_PATH); } server.start(); httpClient.addContextPaths(server.getContextPaths()); httpsClient.addContextPaths(server.getContextPaths()); } rootServletContext = server.tryGetServletContext(""); if(null != rootServletContext) { context = AppContext.get(rootServletContext); }else if(server.getServletContexts().size() == 1){ context = AppContext.get(server.getServletContexts().values()); } setup(); } } }
@Override protected Object createTest() throws Exception { AppContext context = null == rootServletContext ? null : AppContext.get(rootServletContext); if(null != context) { return context.getBeanFactory().getOrCreateBean(getTestClass().getJavaClass()); }else{ return super.createTest(); } }