J'essaye d'écrire un test de junit pour une méthode qui dépare un mot. J'ai le problème que la méthode retourne des symboles au lieu du mot depadded.Définir DataInputStream sur Chaîne Valeur
Ma méthode d'essai est
@Test
public void testReadString() throws IOException
{
String testString = "******test";
InputStream stream = new ByteArrayInputStream(testString.getBytes(StandardCharsets.UTF_8));
DataInputStream dis = new DataInputStream(stream);
String word = readString(dis, 10);
assertEquals("test", word);
}
Les méthodes qu'il est test sont
public static String readString(DataInputStream dis, int size) throws IOException
{
byte[] makeBytes = new byte[size * 2];// 2 bytes per char
dis.read(makeBytes); // read size characters (including padding)
return depad(makeBytes);
}
public static String depad(byte[] read)
{
//word = word.replace("*", "");
StringBuilder word = new StringBuilder();
for (int i = 0; i < read.length; i += 2)
{
char c = (char) (((read[i] & 0x00FF) << 8) + (read[i + 1] & 0x00FF));
if (c != '*')
{
word.append(c);
}
}
return word.toString();
}
L'erreur que je reçois quand je lance le test est test a échoué attendu [Test] mais était [⨪ ⨪⨪ 瑥 獴]
Suis-je conclure correctement des commentaires, etc, que vous lisez un fichier dans un tableau d'octets, le traitement d'une partie de celui-ci au format UTF-8 texte codé et vous Voulez-vous le dé-pad et obtenir le texte restant en tant que chaîne? Si oui, pouvez-vous expliquer cela mieux. Êtes-vous sûr que c'est UTF-8? –