package io.vertx.ext.unit; import io.vertx.core.Vertx; import io.vertx.ext.unit.impl.TestSuiteImpl; import io.vertx.ext.unit.report.TestResult; import java.util.concurrent.atomic.AtomicBoolean; import static org.junit.Assert.*; /** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ public class TestSuiteNoEventLoopTest extends TestSuiteTestBase { public TestSuiteNoEventLoopTest() { super(); getRunner = TestSuiteImpl::runner; run = runner -> { assertNull(Vertx.currentContext()); runner.setUseEventLoop(false).run(); }; operateOnAsync = (async,action) -> action.accept(async); } @Override protected boolean checkTest(TestContext test) { return Vertx.currentContext() == null; } @org.junit.Test public void testEndsAfterCallback() throws Exception { AtomicBoolean ok = new AtomicBoolean(); AtomicBoolean after = new AtomicBoolean(); TestSuite suite = TestSuite.create("my_suite"). test("my_test", context -> { try { context.fail(); } catch (AssertionError e) { } if (!after.get()) { ok.set(true); } }).after(context -> { after.set(true); }); TestReporter reporter = new TestReporter(); run(suite, reporter); reporter.await(); assertTrue(ok.get()); assertTrue(reporter.completed()); assertEquals(0, reporter.exceptions.size()); assertEquals(1, reporter.results.size()); TestResult result = reporter.results.get(0); assertEquals("my_test", result.name()); assertTrue(result.failed()); } }