2012-02-10 6 views
4

カスタムHadoop Writableクラスを作成しています。私はJUnitを使ってreadFields()とwrite()関数をテストしたいと思います。JUnitテストHadoop Writable

write(DataOutput out)をreadFields(DataInput in)にリダイレクトする方法はありますか?私は次のようなことをしたい:

CustomWritable writeable1 = new CustomWritable(); 
CustomWritable writeable2 = new CustomWritable(); 

//build writable1 with some data. 
DataInputAndOutput io = ... 

writeable1.write(io); 
writable2.read(io); 

assertEquals(writable1,writable2); 

思考?

答えて

2

これを達成するために、ByteArrayOutputStream byteout = ...とByteArrayInputStream(byteout.toByteArray())を使用して終了しました。

私が使用してみました:

http://docs.oracle.com/javase/7/docs/api/java/io/PipedOutputStream.html http://docs.oracle.com/javase/7/docs/api/java/io/PipedInputStream.html

をしかし、同じスレッドから実行する場合、これらは時々デッドロックしまうことがわかりました。

+0

'ByteArrayOutputStream'は' DataOutput'を実装していません - あなたは変換をしましたか? –