2012-02-10 96 views
4

我在寫一些自定義Hadoop可寫類。我想使用JUnit來測試readFields()和write()函數。JUnit測試Hadoop可寫

有沒有辦法來重定向寫入(DataOutput中出到)閱讀字段(DataInput中的)?我想做類似的事情:

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' - 你做了一些轉換嗎? – 2013-03-26 12:34:49