2010-01-27 5 views
3

서버에서 반환 된 데이터의 구문 분석을 테스트하려고합니다.안드로이드 단위 테스트에서 데이터 소스 테스트

여러 개의 테스트 XML 파일을 만든 다음이를 사용자 지정 데이터 처리기를 사용하는 색소 파서에 제공한다고 생각했습니다 (테스트하는 응용 프로그램 에서처럼).

하지만 테스트 XML을 어디에 넣어야합니까?

나는 [project_root]/res/xml와 시도했지만 그때는 오류가 발생합니다 : 즉 XML이 유효, 또는 안드로이드는 XML 파일을 찾을 수 없다는 뜻

android.content.res.Resources$NotFoundException: Resource ID #0x7f040000 type #0x1c is not valid at android.content.res.Resources.loadXmlResourceParser(Resources.java:1870) at android.content.res.Resources.getXml(Resources.java:779)

? (서버에서 가져온 XML과 동일한 XML을 사용합니다 - 방화 벽의 넷 패널에서 복사 한 후 파일에 붙여 넣습니다).

getContext().getResources().getXml(R.xml.test_response1)String 대신 XmlResourceParser을 반환하므로 XML을 텍스트 파일로 읽을 수 있습니까?

답변

1

예를 MyAppTest/assets/my.xml를 들어, MyAppTest/assets 당신에게 XMLS를 넣어 다음 다음이 스트림 파서를 호출 할 수 있습니다

InputStream myxml = getInstrumentation().getContext().getAssets().open("my.xml"); 

를 사용하여 읽어 보시기 바랍니다. android.content.res.AssetManager에서 test_response1.xml :

+1

java.io.FileNotFoundException을 (즉, 자원 패키지로) 현재 패키지에 파일을 넣어 클래스 로더를 사용 .openAsset (네이티브 메소드) – zorglub76

+1

getContext(). getAssets(). list ("/")를 호출하면, 여러 파일과 폴더 중 "assets" 폴더. "/ assets"폴더에 파일을 나열하면 아무 것도 얻지 못합니다 - 폴더가 비어있는 것처럼 ... – zorglub76

+0

xml 파일의 위치 (앱의 자산 또는 테스트의 어설 션에 따라 다름)에 따라 적절한 컨텍스트가 필요합니다 그것을 통해 getAssets(). –

1

은 간단하게 ...

private InputStream getTestImage(String pathToFile) throws IOException 
     { 
      final ClassLoader loader = getClass().getClassLoader(); 
      assertNotNull(loader); 
      final InputStream resourceAsStream = loader.getResourceAsStream(pathToFile); 
      assertNotNull(resourceAsStream); 
      return resourceAsStream; 
     } 
+0

나는 이것 때문에 작동하지 않을 것 같아요 : http://code.google.com/p/android/issues/detail?id=10076 그것은 덱스 도구가 추가 매개 변수로 실행되지 않는 한 비 클래스 파일을 무시합니다. – Maks

+0

** 테스트 프로젝트 ** 안의 "res/raw"폴더에있는 파일을 읽을 때 ICS를 사용하면 잘 작동합니다 (테스트중인 앱 프로젝트가 아닙니다). – Maks

관련 문제