猿问

字符串序列化单元测试失败

在运行 JunitString序列化测试后,它失败并给了我以下结果:


预期:"netmodel"

实际:"l"


序列化方法如下


public static void serializeString(String objectToSerialize, OutputStream outputStream) {

    byte[] bytesArr = objectToSerialize.getBytes();

    serializeInt(bytesArr.length, outputStream);

    try {


        outputStream.write(bytesArr);

    } catch (IOException e) {

        e.printStackTrace();

    }

}

我的反序列化方法如下


public static String deserializeString(InputStream inputStream) {

String deserializeObject = "";

char asciiToChar;

int stringByteArrayLength = deserializeInt(inputStream);

byte[] databytesArr = new byte[stringByteArrayLength];


try {

  inputStream.read(databytesArr, 0, stringByteArrayLength);

}

catch (IOException e) {

  e.printStackTrace();

}


for (int i = 0; i < databytesArr.length; i++) {

  asciiToChar = (char) databytesArr[i];

  deserializeObject = "" + Character.toString(asciiToChar);

}

return deserializeObject;

最后我写了一个单元测试如下


public class StringSerializerTest {


  private InputStream iStream;

  private ByteArrayOutputStream oStream;


  @Before

  public void init() {

    oStream = new ByteArrayOutputStream();

  }


  String serialzeAndDeserializeObject(String stringValue) {

    OutputStreamUtil.serializeString(stringValue, oStream);

    iStream = new ByteArrayInputStream(oStream.toByteArray());

    return InputStreamUtil.deserializeString(iStream);

  }


  @Test

  public void equals_equal() {

    String stringValue = "netmodel";

    String deserializedStringValue = serialzeAndDeserializeObject(stringValue);

    assertThat(deserializedStringValue).isEqualTo(stringValue);

  }

}

哪里错了?以及如何解决它?


largeQ
浏览 152回答 2
2回答
随时随地看视频慕课网APP

相关分类

Java
我要回答