跳过
Runnable,跳过
new Thread(runnable).start()
该调用
jettyServer.start()将在服务器自己的线程(以及服务器所需的所有其他线程)上启动服务器。
有关junit和码头的基本示例…
@Testpublic 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)); }}


