문제

나를 쓰기에 대한 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));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top