Netty:测试 Encoder 和 Decoder

本文介绍了如何利用Netty的EmbeddedChannel测试自定义的Encoder和Decoder。通过创建一个编码器将消息“Foo”的整数值放入列表,然后编写测试模拟发送并接收消息,以确保解码器能正确重建消息内容。在没有解码器时,测试显示消息为空,而添加解码器后,测试通过,验证了编码解码过程的正确性。
摘要由CSDN通过智能技术生成

最近用了一段时间的Netty,现构建了一个编码器/解码器管道,以测试编码器和解码器在没有发送真实的消息时是否在正常工作。

方便的是,Netty 有个 EmbeddedChannel,使测试变得非常轻松。 

假设我们有一条消息“ Foo”,我们想通过网络发送。它仅包含一个整数值,因此我们将其发送并在另一侧重建“ Foo”。 我们可以编写以下编码器来执行此操作:

public static class MessageEncoder extends MessageToMessageEncoder<Foo>

{

    @Override

    protected void encode( ChannelHandlerContext ctx, Foo msg, List<Object> out ) throws Exception

    {

        ByteBuf buf = ctx.alloc().buffer();

        buf.writeInt( msg.value() );

        out.add( buf );

    }

}



public static class Foo

{

    private Integer value;



    public Foo(Integer value)

    {

        this.value = value;

    }



    public int value()

    {

        return value;

    }

}

 

因此,我们要做的就是从“ Foo”中拿到“ value”字段并将其放入列表,该列表会向下传递。 

编写一个测试,该测试模拟发送“ Foo”消息并使用空的解码器尝试处理该消息:

@Test

public void shouldEncodeAndDecodeVot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值