2016-11-25 5 views
0

私はサーバーといくつかのクライアントで構成されたNetty 4.1.6を使ってカードゲームを開発しました。Nettyのユニットテスト4.1.6

ユニットテスト(プロジェクトをコーディングしていたときに作成されているはずです)を作成します。それらのいくつかは、次のとおりです。

public void testNettyStringDecoder() { 
    EmbeddedChannel channel = new EmbeddedChannel(new StringDecoder(Charset.defaultCharset())); 
    channel.writeInbound(Unpooled.wrappedBuffer(new byte[]{(byte)0xE2,(byte)0x98,(byte)0xA2})); 
    String myObject = channel.readInbound(); 

    assertEquals("☢", myObject); 
    System.out.println("[NETTY] Tested our StringDecoder's ability to decode unicode." + 
      " Expected ☢ got " + myObject); 
} 

をしかし、私は今、モックたい:私は、このようなような、それの行動を模擬するために、EmbeddedChannelを作成することができることを読んだ、ユーザの入力をテストサーバー出力をテストするなど

a ChannelHandlerContextを使用して、偽のクライアントの入力をテストします。 JUnitを使ってどうすればいいですか?

答えて

0

EmbeddedChannelは、コーデックとパイプラインを使用するにはちょうど良いですし、ChannelHandlerContextをモックする必要はありません。ハンドラをチャンネルに配置し、ハンドラロジックを実行するために必要なインフラストラクチャがすべて整っていることを確認することができれば、単体テストでビジネスロジックを検証できます。

それぞれの埋め込みチャネルは別々の接続を表すため、必要な数のチャネルを持つことができます。チャンネルハンドラが共有可能な場合、複数のチャンネルが開いているときの動作を確認できます。

埋め込みチャネルが十分でない場合は、LocalAddressを使用して、in-vmテストのためだけに完全に機能するサーバ/クライアントをブートストラップすることができます。

+0

私は現在ユニットテスト[HexDumpProxyFrontendHandler](https://github.com/netty/netty/blob/4.1/example/src/main/java/io/netty/example/proxy/HexDumpProxyFrontendHandler.java)を試みています。 )、しかし 'EmbeddedChannel'を使って問題を起こしています。あなたはあなたの最後の陳述を詳しく説明したり、方法を提案したりできますか? –