package io.vertx.example.unit.test; import io.vertx.core.Vertx; import io.vertx.core.http.HttpClient; import io.vertx.core.http.HttpClientRequest; import io.vertx.core.http.HttpServer; import io.vertx.ext.unit.Async; import io.vertx.ext.unit.TestContext; import io.vertx.ext.unit.junit.VertxUnitRunnerWithParametersFactory; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.util.Arrays; /** * Example showing a JUnit parameterized test with Vert.x . The xample is quite simple : a simple http client/server * request using a parameterized port. * * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @RunWith(Parameterized.class) @Parameterized.UseParametersRunnerFactory(VertxUnitRunnerWithParametersFactory.class) public class ParameterizedTest { /** * @return the test ports */ @Parameterized.Parameters public static Iterable<Integer> ports() { return Arrays.asList(8080, 8081); } private final int port; private Vertx vertx; public ParameterizedTest(int port) { this.port = port; } @Before public void before() { vertx = Vertx.vertx(); } @Test public void test(TestContext context) { HttpServer server = vertx.createHttpServer().requestHandler(req -> { context.assertEquals(port, req.localAddress().port()); req.response().end(); }); server.listen(port, "localhost", context.asyncAssertSuccess(s -> { HttpClient client = vertx.createHttpClient(); Async async = context.async(); HttpClientRequest req = client.get(port, "localhost", "/", resp -> { context.assertEquals(200, resp.statusCode()); async.complete(); }); req.exceptionHandler(context::fail); req.end(); })); } @After public void after(TestContext context) { vertx.close(context.asyncAssertSuccess()); } }