问题描述
我在玩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集成的文档。