title: Vertx Junit5 Concurrent timeout exception
body: <p>I am getting an exception when I am running this code, I am closing the testContext in beforeEach and test Method.</p>
  
  <blockquote>
    <p>The test execution timed out. Make sure your asynchronous code includes calls to either VertxTestContext#completeNow(), VertxTestContext#failNow() or Checkpoint#flag()
    java.util.concurrent.TimeoutException: The test execution timed out. Make sure your asynchronous code includes calls to either VertxTestContext#completeNow(), VertxTestContext#failNow() or Checkpoint#flag()
        at io.vertx.junit5.VertxExtension.joinActiveTestContexts(VertxExtension.java:230)</p>
  </blockquote>
  
  <pre><code>@DisplayName("Test Case Workflow")
  @ExtendWith(VertxExtension.class)
  public class OrchestrationDBVerticleTest {
      // tag::prepare[]
      private Vertx vertx;
      private OrchestrationDBService service;
      public static final String CONFIG_JDBC_URL = "test.jdbc.url";
      public static final String CONFIG_JDBC_DRIVER_CLASS = "test.jdbc.driver_class";
      public static final String CONFIG_JDBC_MAX_POOL_SIZE = "test.jdbc.max_pool_size";
  
      @BeforeEach
      public void prepare(VertxTestContext testContext) throws InterruptedException {
          vertx = Vertx.vertx();
          JsonObject config = new JsonObject()
                  .put("url", vertx.getOrCreateContext().config().getString(CONFIG_JDBC_URL, "jdbc:hsqldb:mem:testdb"))
                  .put("driver_class", vertx.getOrCreateContext().config().getString(CONFIG_JDBC_DRIVER_CLASS, "org.hsqldb.jdbcDriver"))
                  .put("max_pool_size", vertx.getOrCreateContext().config().getInteger(CONFIG_JDBC_MAX_POOL_SIZE, 30));
          JsonObject dbConfig = new JsonObject().put("jdbcConfig", config);
  
          vertx.deployVerticle(new OrchestrationDBVerticle(), new DeploymentOptions().setConfig(dbConfig),
                  testContext.succeeding(id -&gt; {
                      service = OrchestrationDBService.createProxy(vertx, OrchestrationDBVerticle.CONFIG_ORCHESTRATION_DB_QUEUE);
                      testContext.completeNow();
                  }));
      }
      // end::prepare[]
  
      // tag::finish[]
      @AfterEach
      public void finish(VertxTestContext testContext) {
          System.out.println("after");
          vertx.close();
      }
      // end::finish[]
  
  
      // tag::crud[]
      @Test
      public void crud_operations(VertxTestContext testContext) {
  //        Checkpoint callProxy = testContext.checkpoint();
          JsonObject jobInput = (new JsonObject()).put("requestInput", new JsonObject().put("test", "test"))
                  .put("workflow", "WorkFlowHandler");
          service.saveJobDetails(jobInput, testContext.succeeding(response -&gt; {
              System.out.println("Service Response : " + response);
              Assertions.assertThat(response.toString().contains("IN_QUEUE"));
              testContext.completeNow();
  //            callProxy.flag();
          }));
      }
      // end::crud[]
  }
  </code></pre>
  
  <p>EDIT: - 
  I was not completing testContext in the finish method.</p>
  
  <pre><code>@AfterEach
      public void finish(VertxTestContext testContext) {
          System.out.println("after");
          vertx.close(testContext.succeeding(response -&gt; {
              testContext.completeNow();
          }));
      }
  </code></pre>
  
  <p>But Even after that my asserstion condtions are always true if I provide wrong input.</p>