もちろんJettyでもいいんだけど、
JREしか使いたくない場合は以下のようにすると、
テストコードの中でHttpServerを作ってレスポンスの受け側のテストが出来ます。
MyTests.java
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import static org.junit.Assert.*;
import org.junit.Test;
import com.sun.net.httpserver.*;
public class MyTests {
@Test
public void httpServer_API_test() throws Exception {
HttpServer httpServer = HttpServer. create( new InetSocketAddress("localhost" ,8080),8080);
ExecutorService httpThreadPool = Executors. newFixedThreadPool(1);
httpServer.setExecutor(httpThreadPool);
httpServer.createContext( "/" ,new HttpHandler(){
@Override
public void handle(HttpExchange exc) throws IOException {
final String response = "Hello HTTP Server" ;
exc.sendResponseHeaders(200, response.length());
OutputStream os = exc.getResponseBody();
os.write(response.getBytes());
os.close();
}
});
httpServer.start();
// TODO:なんやらかんやらテスト
httpServer.stop(1);
httpThreadPool.shutdownNow();
}
}
上記は、ポートが既に使われているとか例外処理とか知ったこっちゃないコードなので、
コピペには注意してください。