package io.vertx.ext.unit; import io.vertx.ext.unit.junit.VertxUnitRunnerWithParametersFactory; import org.junit.Test; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.Arrays; import java.util.concurrent.ConcurrentLinkedDeque; /** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ public class JUnitParameterizedTest { @RunWith(Parameterized.class) @Parameterized.UseParametersRunnerFactory(VertxUnitRunnerWithParametersFactory.class) public static class SimpleParameterizedTestSuite { @Parameterized.Parameters public static Iterable<Boolean> data() { return Arrays.asList(false, true); } static final ConcurrentLinkedDeque params = new ConcurrentLinkedDeque(); private boolean pass; public SimpleParameterizedTestSuite(boolean pass) { params.add(pass); this.pass = pass; } @Test public void theTest(TestContext context) { Async async = context.async(); new Thread() { @Override public void run() { try { Thread.sleep(200); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } finally { if (pass) { async.complete(); } else { context.fail(); } } } }.start(); } } @org.junit.Test public void testSuiteRun() { Result result = run(SimpleParameterizedTestSuite.class); assertEquals(Arrays.asList(false, true), new ArrayList<>(SimpleParameterizedTestSuite.params)); assertEquals(2, result.getRunCount()); assertEquals(1, result.getFailureCount()); } static Result run(Class<?> testClass) { try { return new JUnitCore().run(new Parameterized(testClass)); } catch (Throwable initializationError) { throw new AssertionError(initializationError); } } }