테스트된 것을 Java OutputStream
-
03-07-2019 - |
문제
나를 쓰기에 대한 junit 테스트에 대한 XML 구문 분석된 Java 클래스 출력 직접 OutputStream.예를 들어 xmlWriter.writeString("foo");
생산 것 같은 뭔가 <aTag>foo</aTag>
기록하 outputstream 개최 내부 XmlWriter 인스턴스입니다.이 질문은 어떻게 이를 테스트합니다.하나의 솔루션을 것 물론자 OutputStream 수 FileOutputStream 고 그 결과를 읽을 열어 파일 작성,하지만 잘 되지 않는 우아한입니다.
해결책
a BytearRayoutputStream 그런 다음 해당 사용에서 데이터를 얻으십시오 TobyTearRay (). 이것은 테스트하지 않습니다 어떻게 그것은 스트림에 (한 번에 하나의 바이트 또는 큰 버퍼로) 글을 씁니다. 그러나 보통 어쨌든 당신은 그것을 신경 쓰지 않아야합니다.
다른 팁
할 수 있는 경우를 전달하는 작가가 XmlWriter,나는 그것을 전달한 StringWriter
.를 쿼리할 수 있습니다 StringWriter
's 를 사용하여 컨텐츠 toString()
니다.
이 있는 경우 통과하는 OutputStream
, 를 전달할 수 있습니다 ByteArrayOutputStream
고 호출할 수도 있습니다 toString()
에서 그것을 얻을 그 내용으로는 문자열을 사용합니다.
할 수 있습니다 다음 코드는 다음과 같습니다.
public void testSomething()
{
Writer sw = new StringWriter();
XmlWriter xw = new XmlWriter(sw);
...
xw.writeString("foo");
...
assertEquals("...<aTag>foo</aTag>...", sw.toString());
}
간단 해. @jonskeet가 말했듯이 :
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));
제휴하지 않습니다 StackOverflow