java rs jetty_如何运行Jetty服务器进行Java Junit测试

小编典典

跳过Runnable,跳过new Thread(runnable).start()

该调用jettyServer.start()将在服务器自己的线程(以及服务器所需的所有其他线程)上启动服务器。

有关junit和码头的基本示例…

@Test

public void testGet() throws Exception

{

// Create Server

Server server = new Server(8080);

ServletContextHandler context = new ServletContextHandler();

ServletHolder defaultServ = new ServletHolder("default", DefaultServlet.class);

defaultServ.setInitParameter("resourceBase",System.getProperty("user.dir"));

defaultServ.setInitParameter("dirAllowed","true");

context.addServlet(defaultServ,"/");

server.setHandler(context);

// Start Server

server.start();

// Test GET

HttpURLConnection http = (HttpURLConnection)new URL("http://localhost:8080/").openConnection();

http.connect();

assertThat("Response Code", http.getResponseCode(), is(HttpStatus.OK_200));

// Stop Server

server.stop();

}

在@Before和@AfterJUnit标注也可以使用。这将在每个服务器之前启动服务器,然后@Test在之后停止服务器。

package jetty;

import static org.hamcrest.Matchers.*;

import static org.junit.Assert.*;

import java.net.HttpURLConnection;

import java.net.URL;

import org.eclipse.jetty.http.HttpStatus;

import org.eclipse.jetty.server.Server;

import org.eclipse.jetty.servlet.DefaultServlet;

import org.eclipse.jetty.servlet.ServletContextHandler;

import org.eclipse.jetty.servlet.ServletHolder;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

public class JUnitBeforeAfterJettyTest

{

private Server server;

@Before

public void startJetty() throws Exception

{

// Create Server

server = new Server(8080);

ServletContextHandler context = new ServletContextHandler();

ServletHolder defaultServ = new ServletHolder("default", DefaultServlet.class);

defaultServ.setInitParameter("resourceBase",System.getProperty("user.dir"));

defaultServ.setInitParameter("dirAllowed","true");

context.addServlet(defaultServ,"/");

server.setHandler(context);

// Start Server

server.start();

}

@After

public void stopJetty()

{

try

{

server.stop();

}

catch (Exception e)

{

e.printStackTrace();

}

}

@Test

public void testGet() throws Exception

{

// Test GET

HttpURLConnection http = (HttpURLConnection)new URL("http://localhost:8080/").openConnection();

http.connect();

assertThat("Response Code", http.getResponseCode(), is(HttpStatus.OK_200));

}

}

对于最佳方法,您还可以使用@BeforeClass和@AfterClass技术,以及自动绑定到开放端口的方法。按照“测试类”,这只会启动服务器一次,运行所有@Test方法,然后最后停止服务器一次。

package jetty;

import static org.hamcrest.Matchers.*;

import static org.junit.Assert.*;

import java.net.HttpURLConnection;

import java.net.URI;

import java.net.URL;

import org.eclipse.jetty.http.HttpStatus;

import org.eclipse.jetty.server.Server;

import org.eclipse.jetty.server.ServerConnector;

import org.eclipse.jetty.servlet.DefaultServlet;

import org.eclipse.jetty.servlet.ServletContextHandler;

import org.eclipse.jetty.servlet.ServletHolder;

import org.junit.AfterClass;

import org.junit.BeforeClass;

import org.junit.Test;

public class JUnitBeforeAfterClassJettyTest

{

private static Server server;

private static URI serverUri;

@BeforeClass

public static void startJetty() throws Exception

{

// Create Server

server = new Server();

ServerConnector connector = new ServerConnector(server);

connector.setPort(0); // auto-bind to available port

server.addConnector(connector);

ServletContextHandler context = new ServletContextHandler();

ServletHolder defaultServ = new ServletHolder("default", DefaultServlet.class);

defaultServ.setInitParameter("resourceBase",System.getProperty("user.dir"));

defaultServ.setInitParameter("dirAllowed","true");

context.addServlet(defaultServ,"/");

server.setHandler(context);

// Start Server

server.start();

// Determine Base URI for Server

String host = connector.getHost();

if (host == null)

{

host = "localhost";

}

int port = connector.getLocalPort();

serverUri = new URI(String.format("http://%s:%d/",host,port));

}

@AfterClass

public static void stopJetty()

{

try

{

server.stop();

}

catch (Exception e)

{

e.printStackTrace();

}

}

@Test

public void testGet() throws Exception

{

// Test GET

HttpURLConnection http = (HttpURLConnection) serverUri.resolve("/").toURL().openConnection();

http.connect();

assertThat("Response Code", http.getResponseCode(), is(HttpStatus.OK_200));

}

}

2020-10-12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值