vertx.createHttpServer引发NullPointerException

问题描述

我在玩vertx。

为什么这段代码会引发NullPointerException?

import io.vertx.core.http.HttpServer;
import io.vertx.core.AbstractVerticle;

class vertxFacadeTest extends AbstractVerticle
{

    @Test
    void createServer()
    {
        HttpServer httpServer = vertx.createHttpServer();
    }
}


java.lang.NullPointerException
at com.webinterface.vertxFacadeTest.createServer(vertxFacadeTest.java:23) //line 23 is this here: HttpServer httpServer = vertx.createHttpServer();

有人知道为什么吗? 期待:-)

解决方法

您的Vertx实例为空。现在,您的类扩展了AbstractVerticle,这意味着它具有一个vertx实例变量,但未在其构造函数中初始化;仅在AbstractVerticle.init()方法中将其设置为实际值,该方法仅在部署Verticle时由Vert.x调用。因此,在您的情况下,当JUnit实例化该类时,vertx为null。

您不应让测试类扩展AbstractVerticle。而是可以在测试类中显式创建Vertx实例,可能使用带有@Before注释的方法。请参阅有关Vert'x与JUnit here集成的文档。