我不认为你可以用ServletTester做到这一点。 ServletTester为servlet创建一个Context。您需要设置至少两个上下文的嵌入式jetty:一个用于servlet,另一个用于静态内容。
如果有一个完整的WebAppContext,你会被设置,但是没有。
您可以制作ServletTester的副本并添加头发,或者您可以阅读API并配置必要的上下文。下面是一段代码片段,向您展示基本思想,您将不能按原样编译此代码。您需要为静态内容创建合适的上下文。
server = new Server();
int port = Integer.parseInt(portNumber);
if (connector == null) {
connector = createConnector(port);
}
server.addConnector(connector);
for (Webapp webapp : webapps) {
File sourceDirFile = new File(webapp.getWebappSourceDirectory());
WebAppContext wac = new WebAppContext(sourceDirFile.getCanonicalPath(), webapp.getContextPath());
WebAppClassLoader loader = new WebAppClassLoader(wac);
if (webapp.getLibDirectory() != null) {
Resource r = Resource.newResource(webapp.getLibDirectory());
loader.addJars(r);
}
if (webapp.getClasspathEntries() != null) {
for (String dir : webapp.getClasspathEntries()) {
loader.addClassPath(dir);
}
}
wac.setClassLoader(loader);
server.addHandler(wac);
}
server.start();
感谢您的回复。我认为ServletTester不会给我多少选择。我不知道是否要为我的单元测试设置一个完整的码头服务器,但我会看看它。 – cringe