Doğrudan bir OutputStream'e çıktı veren bir XML ayrıştırma Java sınıfı için deneme testleri yazmak üzereyim. Örneğin, xmlWriter.writeString("foo");
, XmlWriter örneğinin içinde tutulan çıkışa yazılacak <aTag>foo</aTag>
gibi bir şey üretecektir. Soru, bu davranışı nasıl test edeceğinizdir. Bir çözüm elbette, OutputStream'in bir FileOutputStream olmasına izin vermek ve daha sonra yazılı dosyayı açarak sonuçları okumak olacaktır, ancak çok zarif değildir.Bir Java Çıktı Akışı için yazılanları test etme
21
A
cevap
23
Bir ByteArrayOutputStream kullanın ve verileri toByteArray() kullanarak alın. Bu, değerini akışına nasıl yazdığını (tek seferde bir bayt veya büyük bir arabellek) test etmeyecektir, ancak genellikle bununla ilgilenmemelisiniz.
3
Bir Yazar'ı XmlWriter'e aktarabiliyorsanız, bunu StringWriter
'a iletirim. StringWriter
'in içeriğini toString()
kullanarak sorgulayabilirsiniz.
OutputStream
'u geçmeniz gerekiyorsa, bir ByteArrayOutputStream
geçirebilir ve içeriğini bir Dize olarak almak için de toString()
numarasını da arayabilirsiniz.
public void testSomething()
{
Writer sw = new StringWriter();
XmlWriter xw = new XmlWriter(sw);
...
xw.writeString("foo");
...
assertEquals("...<aTag>foo</aTag>...", sw.toString());
}
2
Çok basit: gibi
Sonra birşeyler kod. @JonSkeet'in dediği gibi:
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));
İlgili konular
- 1. Çıktı Python'da Apache Spark'ın Akışı
- 2. C++ kodunu Java kullanarak test etme
- 3. Bir akışı Java 8
- 4. Çıktı ffmpeg ile RTSP akışı
- 5. Django'da iş akışlarını test etme
- 6. Java için GLPK'de girdi/çıktı
- 7. django projesini test etme
- 8. Android Uygulamaları Test Etme
- 9. Performans Test Etme
- 10. xml.etree.ElementTree'nin Eşdeğerliğini Test Etme
- 11. Clojure veritabanı birimi test etme/alay etme
- 12. Jinja2 Listesinde Test Etme
- 13. VSTO Uygulamalarını Test Etme?
- 14. Django allauth'u test etme
- 15. MongooseJs Validasyonlarını Test Etme
- 16. iPhone 5 için uygulamaları test etme
- 17. Stres için bir bulut hizmetini kullanma Web uygulamasını test etme
- 18. Bir regex ile test edilmiştir akışı, okuyorum
- 19. Birim Özel bir özellik sınıfını test etme
- 20. GoConvey ile bir REST API'sini Test Etme
- 21. Nesne bir vektör olup olmadığını test etme
- 22. Bir gdb uygunluk değişkeni tanımlandıysa test etme
- 23. Tek bir dosyayı pytest altında test etme
- 24. akka: Bir aktörün durdurulduğunu test etme
- 25. Java'ya karşı test etme EE 6 API
- 26. Java eşzamanlılığı: garip çıktı
- 27. Java akışı nasıl uygulanır?
- 28. Java 8 akışı nesnelerin
- 29. Java 8: akışı API
- 30. Ember.js: Denetleyicideki eylemleri test etme