CompleteChannelFuture extends CompleteFuture<Void> implements ChannelFuture { @Override public ChannelFuture removeListener(GenericFutureListener<? extends Future<? super Void>> listener) { super.removeListener(listener); return this; } protected  CompleteChannelFuture(Channel channel, EventExecutor executor); @Override ChannelFuture addListener(GenericFutureListener<? extends Future<? super Void>> listener); @Override ChannelFuture addListeners(GenericFutureListener<? extends Future<? super Void>>... listeners); @Override ChannelFuture removeListener(GenericFutureListener<? extends Future<? super Void>> listener); @Override ChannelFuture removeListeners(GenericFutureListener<? extends Future<? super Void>>... listeners); @Override ChannelFuture syncUninterruptibly(); @Override ChannelFuture sync(); @Override ChannelFuture await(); @Override ChannelFuture awaitUninterruptibly(); @Override Channel channel(); @Override Void getNow(); @Override boolean isVoid();  }
@Test public void shouldNotDoAnythingOnRemove() throws Exception { Channel channel = Mockito.mock(Channel.class); CompleteChannelFuture future = new CompleteChannelFutureImpl(channel); ChannelFutureListener l = Mockito.mock(ChannelFutureListener.class); future.removeListener(l); Mockito.verifyNoMoreInteractions(l); Mockito.verifyZeroInteractions(channel); }