Получение одновременного исключения TimeoutException в JUNIT с помощью vertx

Я пытаюсь запустить тестовые случаи junit, используя VertxUnitRunner.class. У меня 35 тестовых случаев, каждый раз получая параллельное исключение для разных тестовых случаев. Я запускаю эти тестовые случаи в машине VM с Дженкинсом.

Кто-нибудь знает решение для этого?

@RunWith(VertxUnitRunner.class)
public class KeyMgmtMainTest {

    private Environment env;

    private String host;

    private int port;


    @Before
    public void init(TestContext context) {

    ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] { "xyz-abc-servlet.xml" });
    vertx = Vertx.factory.vertx();

    vertx.deployVerticle(new ABC1Verticle(ctx), context.asyncAssertSuccess());
    vertx.deployVerticle(new ABC2VerticleTest(ctx), context.asyncAssertSuccess());
    vertx.deployVerticle(new ABC3ConsumerVerticleTest(ctx), context.asyncAssertSuccess());
    vertx.deployVerticle(new ABC4ConsumerVerticleTest(ctx), context.asyncAssertSuccess());
    env = ctx.getBean(Environment.class);
    port = Integer.parseInt(env.getProperty("http.server.port"));
    host = env.getProperty("cluster.host");

    }

    @Test
    public void testSaveDomain(TestContext context) {
    final Async async = context.async();
    final String token = "Bearer";
    Domain domain = new Domain();
    domain.setDomainName("XXX");
    domain.setTenantId("YYYY.com");
    domain.setCreatedBy("admin");
    domain.setUpdatedBy("admin");
    vertx.createHttpClient().post(port, host, "/my/url/domain").putHeader("Authorization", token)
        .setChunked(true).handler(response -> {
            response.bodyHandler(body -> {
            context.assertEquals(200, response.statusCode());
            JsonObject json = new JsonObject(body.toString());
            json = json.getJsonObject("domain");
            context.assertTrue(json.getLong("domainId") == 1);
            context.assertTrue(json.getString("domainName").equals("Lighting"));
            async.complete();
            });
        }).write(Json.encode(domain)).end();
    }

       @After
    public void tearDown(TestContext context) {
    vertx.close(context.asyncAssertSuccess());
  }

}

2 ответа

Глупая ошибка, которую я совершил.

Я заменил @Before на @BeforeClass, где развернуты вершины. Метод @Before выполняется для каждого тестового случая, поэтому он развертывает вершины каждый раз, когда развертывание должно выполняться один раз.

После изменения @Before на @BeforeClass все работает нормально. нет одновременной проблемы.

Каждый тест должен заканчиваться на end()

public void testAbout(TestContext context) {
    final Async async = context.async();
        vertx.createHttpClient().get(port, host, "/about", response -> {
            response.handler(body -> {
                context.assertEquals(200, response.statusCode());
                context.assertTrue(body.toString().contains("Hello"));
                async.complete();
            });
        }).end();
}
Другие вопросы по тегам