#java #unit-testing #struts2 #integration-testing #embedded-jetty
#java #модульное тестирование #struts2 #интеграция-тестирование #встроенный-jetty
Вопрос:
Я пытаюсь настроить struts2 в Jetty программно, но у меня возникают большие проблемы с этим.
Поскольку они предназначены для модульных тестов, я не хочу использовать spring или любую другую «платформу DI».
вот что у меня есть — (здесь используется моя оболочка вокруг jetty, поэтому вызовы методов не совсем совпадают с вызовами Jetty, но вы можете легко уловить идею)
JspServlet servlet = new JspServlet();
server.mount("*.jsp", servlet)
.withInitParameter("trimSpaces", "true")
.withInitParameter("mappedFile", "true")
.withInitParameter("classdebuginfo", "true")
.withInitParameter("keepGenerated", "true")
.withInitParameter("development", "true")
.withInitParameter("scratchDir", "./target/scratch");
server.getContextHandler().setResourceBase("some-place/WebContent");
server.filter("/*", new FilterDispatcher())
server.start();
Это приведет к сбою, поскольку жалуется, что spring не настроен. Я экспериментировал с подклассами FilterDispatcher, возвращением MockConfiguration и другими вещами, но на самом деле я не добился большого прогресса…
private static class MyFilterDispatcher extends FilterDispatcher {
private MyFilterDispatcher(ActionMapper mapper) {
setActionMapper(mapper);
}
@Override
protected Dispatcher createDispatcher(FilterConfig filterConfig) {
Dispatcher dispatcher = super.createDispatcher(filterConfig);
ConfigurationManager configurationManager = new ConfigurationManager("filterdispatcher");
configurationManager.setConfiguration(new MockConfiguration());
dispatcher.setConfigurationManager(configurationManager);
return dispatcher;
}
}
Итак, тогда вам нужно реализовать ActionMapper, который, если вы это сделаете, вы получите UOE из вашей MockConfiguration для getRuntimeConfiguration — так что я думаю, что это, вероятно, неправильный путь…
Если кто-нибудь делал это, был бы очень признателен за любые зацепки.
Спасибо!!
Джеймс