2017-10-07 8 views
0

Ich spiele mit Vertx.io (Version 3.4.2). Legen Sie etwas Code ab und jetzt möchte ich es testen, also schreibe ich ein paar Komponententests. Wenn ich jeden Test separat sie beide komplett gut laufen, aber wenn ich einen mvn sauberen Test tun sie beide nicht mit dieser Nachricht:Unit testet eine Vertx.io-Anwendung

java.net.BindException: Address already in use: bind 
at sun.nio.ch.Net.bind0(Native Method) 
at sun.nio.ch.Net.bind(Unknown Source) 
at sun.nio.ch.Net.bind(Unknown Source) 
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) 
at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:128) 
at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:554) 
at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1258) 
at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:502) 
at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:487) 
at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:980) 
at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:250) 
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:365) 
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) 
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasksFrom(SingleThreadEventExecutor.java:379) 
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354) 
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:436) 
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) 
at java.lang.Thread.run(Unknown Source) 

Es scheint, dass verticle nicht Abschaltung nach Test fertigstellung. Hier sind die Tests:

Tests sind einfach, ihr Zweck ist es, wie Unit-Test mit Vertex zu bekommen. Ich erwarte, dass nach dem Ende des Tests jedes vertikale Element freigeschaltet wird. Was vermisse ich?

Antwort

1

Versuchen Sie zu warten, bis vertx geschlossen ist. Hier ist das Beispiel:

@After 
public void tearDown(TestContext context) { 
log.info("shutting down test."); 
Async async = context.async(); 
vertx.close(h -> { 
    if (h.failed()) { 
     log.error(h.cause()); 
    } 
    async.success(); 
}); 
} 
Verwandte Themen