gpt4 book ai didi

java - 使用带有 JUnit 测试的 Jetty 服务器

转载 作者:搜寻专家 更新时间:2023-11-01 01:00:54 24 4
gpt4 key购买 nike

我一直在尝试通过在我的 JUnit 测试用例的 BeforeClass 方法中启动 Jetty 服务器,然后使用 HttpClient 形成对服务器的请求来测试我的 Web 应用程序。我让服务器启动没有任何问题,但是当我尝试发出请求时,我不断收到 404。

我的服务器配置如下:

  public void start() throws Exception {
if (server == null) {
server = new Server(PORT);
server.setStopAtShutdown(true);

wac = new WebAppContext();
wac.setContextPath("/app");
wac.setResourceBase("war");
wac.setClassLoader(this.getClass().getClassLoader());
server.addHandler(wac);

server.start();
}
}

我的配置有问题吗?服务器正在运行,我可以看到我正在打它,它就是找不到任何资源。

最佳答案

这是一个完整的 Junit 测试类,使用了 jetty :

package test.server;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.webapp.WebAppContext;

public class MockPortalTest {

private Server server;

@Before
public void startServer() throws Exception {
server = new Server(8080);
server.setStopAtShutdown(true);
WebAppContext webAppContext = new WebAppContext();
webAppContext.setContextPath("/app");
webAppContext.setResourceBase("src/main/webapp");
webAppContext.setClassLoader(getClass().getClassLoader());
server.addHandler(webAppContext);
server.start();
}


@Test
public void shouldBePreAuthenticated() throws Exception {
String userId = "invalid";
HttpClient client = new DefaultHttpClient();
HttpGet mockRequest = new HttpGet("http://localhost:8080/app");
mockRequest.setHeader("http-user",userId);
HttpResponse mockResponse = client.execute(mockRequest);
BufferedReader rd = new BufferedReader
(new InputStreamReader(mockResponse.getEntity().getContent()));
// DO YOUR ASSERTIONS
}

@After
public void shutdownServer() throws Exception {
server.stop();
}

}

关于java - 使用带有 JUnit 测试的 Jetty 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com