Netty - 使用 IdleStateHandler 对处理程序的空闲状态进行单元测试

我正在尝试测试我自己的处理程序,这些处理程序io.netty.handler.timeout.IdleStateEvent从io.netty.handler.timeout.IdleStateHandler. 我没有看到其他人有这个问题,但是当我在代码中睡觉以触发空闲事件时,空闲事件没有触发。我相信这是由于在同一线程上运行的嵌入式通道?下面是一个示例测试。


@Test

public void userEventTriggered_IdleStateEvent() throws Exception {

    // given

    IdleStateHandler idleStateHandler = new IdleStateHandler(

            1L,0L,0L, TimeUnit.SECONDS);

    EmbeddedChannel channel = new EmbeddedChannel(idleStateHandler, myHandler);


    // when

    TimeUnit.SECONDS.sleep(2);


    // then

    assertFalse(channel.isActive());


    channel.finish();

}

我在IdleStateHandler 的单元测试中注意到,已经创建了一个可测试的处理程序,它使用包范围的方法来测试处理程序。


有没有办法从包外测试空闲事件?我需要确保对这些事件的报道。任何提示表示赞赏。谢谢!


largeQ
浏览 189回答 1
1回答

POPMUISE

你应该channel.runPendingTasks()睡后打电话。这应该执行现在准备好的计划任务。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java