zoh*_*har 2 unit-testing hadoop
我实现WritableComparable了自己的但我能找到好的单元测试write和readFields方法.
有任何想法吗?
您可以找到更简单的方法来测试您的可写,但手动执行序列化/反序列化也可以.例如:
MyUtils.java:
...
import org.apache.commons.io.IOUtils;
...
public static byte[] serialize(Writable writable) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dataOut = null;
try {
dataOut = new DataOutputStream(out);
writable.write(dataOut);
return out.toByteArray();
}
finally {
IOUtils.closeQuietly(dataOut);
}
}
public static <T extends Writable> T asWritable(byte[] bytes, Class<T> clazz)
throws IOException {
T result = null;
DataInputStream dataIn = null;
try {
result = clazz.newInstance();
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
dataIn = new DataInputStream(in);
result.readFields(dataIn);
} catch (InstantiationException e) {
// should not happen
assert false;
} catch (IllegalAccessException e) {
// should not happen
assert false;
} finally {
IOUtils.closeQuietly(dataIn);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
然后在你的测试类中:
CustomWritable record = ... ; //your initialized Writable
byte[] serializedBytes = MyUtils.serialize(record);
CustomWritable deserialized =
MyUtils.asWritable(serializedBytes, CustomWritable.class);
assertEquals("Value mismatch!", record.getFieldA(), deserialized.getFieldA());
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1140 次 |
| 最近记录: |