Tôi sắp viết các bài kiểm tra junit cho một lớp Java phân tích cú pháp XML xuất trực tiếp ra một OutputStream. Ví dụ xmlWriter.writeString("foo");
sẽ tạo ra một cái gì đó như <aTag>foo</aTag>
để được ghi vào outputstream được giữ bên trong cá thể XmlWriter. Câu hỏi đặt ra là làm thế nào để kiểm tra hành vi này. Một giải pháp dĩ nhiên là để cho OutputStream trở thành một FileOutputStream và sau đó đọc kết quả bằng cách mở tập tin văn bản, nhưng nó không phải là rất thanh lịch.Kiểm tra những gì được viết cho một Java OutputStream
21
A
Trả lời
23
Sử dụng ByteArrayOutputStream và sau đó lấy dữ liệu ra khỏi đó bằng cách sử dụng toByteArray(). Điều này sẽ không kiểm tra cách ghi vào luồng (một byte tại một thời điểm hoặc bộ đệm lớn) nhưng thường bạn không nên quan tâm đến điều đó.
3
Nếu bạn có thể chuyển Writer đến XmlWriter, tôi sẽ chuyển nó qua một số StringWriter
. Bạn có thể truy vấn nội dung của StringWriter
bằng cách sử dụng toString()
trên đó.
Nếu bạn phải vượt qua OutputStream
, bạn có thể chuyển số ByteArrayOutputStream
và bạn cũng có thể gọi toString()
trên đó để nhận nội dung dưới dạng Chuỗi.
Sau đó, bạn có thể mã hóa một cái gì đó như:
public void testSomething()
{
Writer sw = new StringWriter();
XmlWriter xw = new XmlWriter(sw);
...
xw.writeString("foo");
...
assertEquals("...<aTag>foo</aTag>...", sw.toString());
}
2
Nó đơn giản. Như @JonSkeet đã nói:
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));
Các vấn đề liên quan
- 1. Kiểm tra đơn vị - Những gì không để kiểm tra
- 2. Kiểm tra những gì bạn bay, bay những gì bạn kiểm tra. [Nguyên tắc của NASA]
- 3. Chuỗi trả về Javascript về những gì nên là một bài kiểm tra boolean viết tắt
- 4. Làm thế nào để bạn biết những gì để kiểm tra khi viết bài kiểm tra đơn vị?
- 5. Cách kiểm tra xem OutputStream có bị đóng không
- 6. Ngoại lệ được kiểm tra trong Java/C# là gì?
- 7. Java OutputStream Skip (offset)
- 8. Kiểm tra những gì sắp sửa được thực hiện trong một móc trước cam kết
- 9. Viết Trình kiểm tra SSL bằng cách sử dụng Java
- 10. Có một Null OutputStream trong Java không?
- 11. Viết đồng thời theo Chuẩn OutputStream
- 12. Máy chủ Kerberos nhúng Java được viết Java để kiểm tra
- 13. Selenium kiểm tra những gì trên và trên Karma?
- 14. Điều gì cần kiểm tra khi viết Bài kiểm tra Đơn vị?
- 15. Kiểm tra JQuery cho Checkbox được kiểm tra
- 16. Lập trình Kiểm tra một mục trong Danh sách kiểm tra nơi văn bản bằng với những gì tôi muốn
- 17. Làm cách nào để bạn kiểm tra trình kiểm tra OpenGL được viết bằng GLSL?
- 18. những gì nên được trong tập tin .gitignore cho một dự án java netbeans?
- 19. Kiểm tra đơn vị cho một phương thức lấy đối tượng HttpResponse làm tham số. OutputStream không có sẵn
- 20. Làm thế nào để viết testcase để kiểm tra những thứ như "30 ngày hết hạn"?
- 21. Kiểm tra Tăng cường: Cách viết các trường hợp kiểm tra được tham số
- 22. Cách viết Kiểm tra Đơn vị cho JAXB 2.0 Marshalling
- 23. Cách kiểm tra xem tệp có "hoàn thành" (hoàn toàn được viết) bằng Java
- 24. Java đôi kiểm tra khóa
- 25. Kiểm tra đơn vị một Servlet Java
- 26. Viết bài kiểm tra tốt cho các ứng dụng Django
- 27. Kiểm tra bảo mật Java
- 28. Ổ cắm Java: DataOutputStream hoặc OutputStream?
- 29. Những gì được lưu trữ trên heap và những gì được lưu trữ trên ngăn xếp?
- 30. Kiểm tra nếu một nút radio được kiểm tra jquery