Mam zamiar napisać testy junitowe dla XML parsującej klasy Java, która jest wyprowadzana bezpośrednio do OutputStream. Na przykład: xmlWriter.writeString("foo");
wyprodukowałby coś takiego, jak <aTag>foo</aTag>
, które zostanie zapisane w strumieniu wyjściowym przechowywanym wewnątrz instancji XmlWriter. Pytanie brzmi, jak przetestować to zachowanie. Jednym rozwiązaniem byłoby oczywiście, aby OutputStream był FileOutputStream, a następnie odczytać wyniki, otwierając zapisany plik, ale nie jest zbyt elegancki.Testowanie tego, co napisano w Javie OutputStream
21
A
Odpowiedz
23
Użyj ByteArrayOutputStream, a następnie pobierz dane z tego przy użyciu toByteArray(). Nie przetestuje to, jak zapisuje się do strumienia (jeden bajt na raz lub jako duży bufor), ale zazwyczaj i tak nie powinno się tego obawiać.
3
Jeśli możesz przekazać Writer do XmlWriter, przekażę mu StringWriter
. Możesz zapytać o zawartość StringWriter
za pomocą toString()
na jej temat.
Jeśli musisz przekazać numer OutputStream
, możesz przekazać ByteArrayOutputStream
i możesz również zadzwonić pod numer toString()
, aby uzyskać jego zawartość jako ciąg.
Następnie można kodować coś takiego:
public void testSomething()
{
Writer sw = new StringWriter();
XmlWriter xw = new XmlWriter(sw);
...
xw.writeString("foo");
...
assertEquals("...<aTag>foo</aTag>...", sw.toString());
}
2
To proste. Jako @JonSkeet powiedział:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// pass the baos to be writed with "value", for this example
byte[] byteArray = baos.toByteArray();
Assert.assertEquals("value", new String(byteArray));
Powiązane problemy
- 1. jak napisać tablicę do outputStream w Javie
- 2. Kiedy używać "tego" w Javie
- 3. Przesyłanie Java OutputStream (offset)
- 4. Jak umieścić dane z OutputStream w ByteBuffer?
- 5. Pobierz OutputStream na ciąg
- 6. Co oznacza testowanie API?
- 7. W jakim języku napisano .NET Framework?
- 8. Jak napisano pierwszy kompilator C?
- 9. Co robi Collections.unmodifiableSet() w Javie?
- 10. Co oznacza "zsynchronizowany" w Javie?
- 11. Co oznacza dwukropek w Javie?
- 12. Gniazda Java: DataOutputStream lub OutputStream?
- 13. Testowanie tego, co ma się stać w haku przed popełnieniem przestępstwa
- 14. Jak umieścić zawartość ByteBuffer w OutputStream?
- 15. Co oznacza rozwój eksplodowany? (W Javie)
- 16. Co to jest operator diamentów w Javie?
- 17. Co to jest "typ SAM" w Javie?
- 18. Co jest odpowiednikiem funkcji "nth_element" w Javie?
- 19. Utwórz Java-Zip-Archive z istniejącego OutputStream
- 20. Co to są pojemniki w Javie
- 21. Co klasy klasy [B reprezentuje w Javie?
- 22. Co to jest klasa równorzędna w Javie?
- 23. Co to właściwie jest w Javie?
- 24. Co to jest StampedLock w Javie?
- 25. Co oznacza <- oznacza w Javie?
- 26. Co to jest operator & = w Javie
- 27. Co jest w Javie "domyślnym pakietem systemowym"?
- 28. Co to jest metoda wygodna w Javie?
- 29. Co oznaczają te znaki specjalne w Javie?
- 30. Co to jest strcpy w Javie?