April
25th,
2017
안드로이드 스튜디오에서 로컬 유닛 테스팅 수행시 자바 리소스에 접근이 안되서 해결방법 찾던중 발견 진즉에 찾아놓고 몇번 헤매다가 다시 적용해서 해결 했다 … 안될리가 없지 ㅠㅠ
Android Studio unit testing: read data (input) file
- src/test/res 디렉토리 생성
- 모듈의 build.gradle에 아래 스크립트 추가
android{
...
}
task copyResDirectoryToClasses(type: Copy){
from "${projectDir}/src/test/res"
into "${buildDir}/intermediates/classes/test/debug/res"
}
// androidTest가 아닌 일반 test 돌릴때는 assembleDebug task를 안도니까 javaPreCompileDebugUnitTest 일때 복사하도록
afterEvaluate() {
javaPreCompileDebugUnitTest.dependsOn(copyResDirectoryToClasses)
}
- 코드에서 해당 리소스 읽어올때는 Class.getResource대신 Class.getClassLoader().getResource() 또는 Class.getClassLoader().getResourceAsStream() 사용
ClassLoader classLoader = obj.getClass().getClassLoader();
// 경로는 res/xxx.txt 식으로 호출
URL resource = classLoader.getResource("res/fileName");