ste*_*bot 4 java junit http jetty
我一直在尝试通过在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();
}
}
Run Code Online (Sandbox Code Playgroud)
我的配置有问题吗?服务器正在运行,我可以看到我正在点击它,它只是找不到任何资源.
Chr*_*lli 14
这是一个使用jetty的完整Junit测试类:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
我在第一篇文章中开始使用代码片段,然后开始反复尝试.下面的代码终于为我工作了:
Server 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();
URL url = new URL("http://localhost:8080/app/some_call");
URLConnection connection = url.openConnection();
List<String> lines = IOUtils.readLines(connection.getInputStream());
System.out.println(lines.get(0));
Run Code Online (Sandbox Code Playgroud)
POM看起来像这样:
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>${jetty.version}</version>
</dependency>
<jetty.version>6.1.25</jetty.version>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14741 次 |
| 最近记录: |