2010-06-10 8 views
2

내 질문은 :의 JUnit에서단위 테스트 XML

은 어떻게 테스트 (SUT)에서 내 시스템에 대한 I 설정 XML 데이터를하지 않고 SUT 물리적에 저장된 XML 파일에서 읽어 파일 시스템

배경는 :

나는 송장의 생성에 대한 규칙을 포함하는 XML 파일을 제공하고있다. 내 직업은 이러한 규칙을 XML에서 Java Object로 변환하는 것입니다. 30 일 기간 후에, 트랜잭션이 자바 클래스로 변환

<ExpirationDay>30</ExpirationDay> 

을 청구 할 수 없음을 나타냅니다 내 XML 파일에 다음과 같은 태그가있는 경우 는 ExpirationDateInvoicingRule

나는이 말을 InvoiceConfiguration 클래스는 XML 파일을 가져 와서 * InvoicingRule 객체를 생성해야합니다.

내가 원하는 단위 테스트 InvoiceConfiguration에 : 나는

문제 InvoiceConfiguration

내에서 XML 문서를 구문 분석 할 경우 StAX를 사용하는 생각입니다. 하지만 InvoiceConfiguration이 XML 파일에서 물리적으로 파일 시스템에 읽는 것을 원하지 않습니다. 내 유닛 테스트가 물리적으로 저장된 xml 파일과 독립적이어야한다. 메모리에 xml 표현을 만들고 싶습니다. 하지만 StAX 파서는 FileReader 만 사용합니다 (또는 File 객체로 재생할 수 있습니다).

답변

0

고마워 약입니다. http://marc.info/?l=xerces-j-dev&m=86952145010437&w=2

이 BAQ Haidri

----- 원본 메시지의 대답은 ----- 에서 : BAQ Haidri [흔한 : 또 다른 좋은 소스는이 링크입니다 bhaidri @ ..

> 
>public void parseString(String s) throws SAXException, IOException 
>{ 
>   StringReader reader = new SringReader(s); 
>   InputSource source = new InputSource(reader); 
>   parser.parse(source); 
>} 
: ..]

내가 글은 WROX 게시하여 '전문 XML'라는 책에서 이것을 발견

0

File을 여는 대신 Reader를 사용하도록 코드를 리 팩터합니다. 파일 열기는 개별적으로 수행 할 수 있습니다 (단위 테스트에서 파일에 액세스하지 않는 규칙을 따르려면 대부분 테스트 할 수 없습니다). 단 한 줄이기 때문에 잘못 입력하지 않아도됩니다.

0

다음은 XML 처리를 위해 XMLUnit과 사용자 정의 프레임 워크를 모두 사용하는 테스트의 예입니다. 이 프레임 워크는 StAX를 사용하여 XML을 Java POJO로 매핑합니다.

https://simple.svn.sourceforge.net/svnroot/simple/trunk/download/stream/src/test/java/org/simpleframework/xml/core/

은 외부 의존성이없고, 테스트 커버리지는 90 % 당신의 도움에 대한

http://simple.sourceforge.net/download/stream/report/cobertura/