java - 布尔类型序列化和反序列化单元测试失败
问题描述
在为布尔类型序列化运行 Junit 测试后,它总是失败,true
值 my serialize 方法如下
public static void serializeBoolean(boolean objectToSerialize, OutputStream outputStream) {
byte[] bytesArr = new byte[1];
ByteBuffer.wrap(bytesArr).put((byte) (objectToSerialize ? 1 : 0));
try {
outputStream.write(bytesArr);
} catch (IOException e) {
e.printStackTrace();
}
}
而我的反序列化方法如下
public static boolean deserializeBoolean(InputStream inputStream) {
byte[] databytesArr = new byte[1];
if (ByteBuffer.wrap(databytesArr).get() == 1) {
return true;
}
else {
return false;
}
}
最后,我写了一个单元测试如下
public class BooleanSerializerTest {
private InputStream iStream;
private ByteArrayOutputStream oStream;
@Before
public void init() {
oStream = new ByteArrayOutputStream();
}
boolean serialzeAndDeserializeObject(boolean booleanValue) {
OutputStreamUtil.serializeBoolean(booleanValue, oStream);
iStream = new ByteArrayInputStream(oStream.toByteArray());
return InputStreamUtil.deserializeBoolean(iStream);
}
@Test
public void equalToTrue() {
boolean booleanValue = true;
boolean deserializedBooleanValue =
serialzeAndDeserializeObject(booleanValue);
assertThat(deserializedBooleanValue).isEqualTo(booleanValue);
}
@Test
public void equalToFalse() {
boolean booleanValue = false;
boolean deserializedBooleanValue =
serialzeAndDeserializeObject(booleanValue);
assertThat(deserializedBooleanValue).isEqualTo(booleanValue);
}
}
equalToFalse()
测试成功但equalToTrue()
总是失败
什么问题?以及如何解决?
解决方案
您应该添加inputStream.read(databytesArr);
如下方法deserializeBoolean
:
public static boolean deserializeBoolean(InputStream inputStream) {
byte[] databytesArr = new byte[1];
try {
inputStream.read(databytesArr);
} catch (IOException e) {
e.printStackTrace();
}
if (ByteBuffer.wrap(databytesArr).get() == 1) {
return true;
} else {
return false;
}
}
推荐阅读
- laravel - 使用 pagenavi 功能的查询不起作用,而 get 功能起作用
- sql - 在 SQL Server 中,我们可以比较一个表中的外键和其他表中的唯一键中的空值吗?
- mysql - 在mysql中确认小数(M,D)的大小
- azure - 从 azure 函数获取标头值
- google-apps-script - 复制行并附加它,保持谷歌脚本中的文本格式
- asp.net-core - asp.net core 2 具有默认存储的身份自定义存储提供程序
- html - 如何将单选按钮与左侧的文本对齐?
- javascript - React Native:iOS 听写无法清除文本输入
- python - 使用 matplotlib 绘制 2D 效率
- r - igraph:将列表转换为顶点序列