我正在尝试测试自己的处理程序,该处理程序从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();
}
我在unit tests for IdleStateHandler中注意到,已经创建了一个可测试的处理程序,该处理程序使用package-scoped methods来测试处理程序。
有什么方法可以从程序包外部测试空闲事件?我需要确保涵盖这些事件。任何提示表示赞赏。谢谢!
答案 0 :(得分:1)
您应该在睡觉后致电channel.runPendingTasks()
。这应该执行已准备好的计划任务。